访问在before_save中传递给update_attribute / create的params

时间:2012-05-18 17:48:53

标签: ruby-on-rails activerecord

有型号

Class ModelA < ActiveRecord::Base
  has_many :apples
  before_save :include_prime_apple_in_apples
  has_one :prime_apple


 def include_prime_apple_in_apples
     self.apple_ids << prime_apple_1.id
 end
end

l=ModelA.new(:apple_ids => [ "ap_1_id", "ap_2_id"],:prime_apple => prime_apple_1)
l.save
l.apple_ids.should include(prime_apple_1.id) # this doesnt seem to work

如何更改为协会传递的参数?

1 个答案:

答案 0 :(得分:0)

那里有什么问题但是要回答你的问题: AFAIK只能分配给“other_ids”。您也可以直接推送到has_many关系:

self.apple_ids = self.apple_ids + [prime_apple_1.id]

self.apples << prime_apple_1

Apple模型中是否设置了不同的foreign_key? 有很多人会从apple中做一个select *,其中modela_id = X. 有一个人会从apple中做一个select *,其中modela_id = X limit 1 这意味着无论你在prime_apple访问器上设置什么,你都会得到第一个Apple记录......