我有以下内容:
app/models/order.rb
class Order < ActiveRecord::Base
belongs_to :client
accepts_nested_attributes_for :client
end
app/models/client.rb
class Client < ActiveRecord::Base
has_many :orders
end
当保存订单时,我想
我应该使用 before_save 作为客户端,或者实现它的最佳方法是什么?
感谢研究员!
答案 0 :(得分:1)
我使用before_create
作为订单,方法可能如下:
class Order < ActiveRecord::Base
before_create :determine_client
...
def determine_client
if Client.exists?(:email => self.email_variable)
self.client_id = Client.find_by_email(self.email_variable)
else
cur_client = Client.create!({ :email => self.email_variable })
self.client_id = cur_client.id
end
end
end
这是基本的,但你可以从那里建立。希望这有帮助!
答案 1 :(得分:0)
感谢 Fishz 我玩了一遍,找到了以下解决方案:
class Order < ActiveRecord::Base
before_validation :check_client_existance
def check_client_existance
if client = Client.find_by_email(self.client.email)
self.client = client
end
end
end
谢谢=)