簡體   English   中英

將具有相同值的Rails模型屬性設置更改嗎? 返回真嗎?

[英]Will setting Rails model attributes with the same value make changed? return true?

我希望通過允許基於db/seeds.rb的值和應用程序的當前狀態來創建或更新應用程序中的某些條目(或根本不執行任何操作),使db:seed任務更具動態性。后端數據庫。 我還希望簡化實現此邏輯的功能。

我想避免這種情況:

def create_or_update_config(key, value)

  ...

  if config_entry.value != value
    config_entry.value
  end

  if config_entry.changed?
    config_entry.save
  end

  ...

end

而是簡單一些:

def create_or_update_config(key, value)

  ...

  config_entry.value = value

  if config_entry.changed?
    config_entry.save
  end

  ...

end

ActiveRecord是否足夠聰明,即使設置了屬性值(具有相同的值),也知道屬性值是否已更改?

是。 ActiveRecord changed? 僅當自上次保存以來存在突變時,該方法才返回true。 使用我自己的應用程序控制台的示例(Rails 5.1.6):

irb(main):013:0> config.value
=> "http://localhost:3100"
irb(main):014:0> config.value = "http://localhost:3100"
=> "http://localhost:3100"
irb(main):015:0> config.changed?
=> false
irb(main):016:0> config.value = "anything else"
=> "anything else"
irb(main):017:0> config.changed?
=> true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM