有型号
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
如何更改为协会传递的参数?
答案 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记录......