0
我想在我的模型中有一个before_create方法,它将检查模型是否与另一个模型(用户)有关联/关系,并在关系为零。在创建/保存模型记录之前设置关联ID
问题是,我不知道为什么下面的条件不会被执行,尽管用户和user_id变量为零。
的关系是:
User has_many :Leads
Campaign has_many :Leads
Lead belongs_to :User and :Campaign
这里的型号导线代码:
class Lead < ActiveRecord::Base
attr_accessible :email
belongs_to :popup
belongs_to :campaign
validates :email, presence: true, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i }
before_create :check_user_id
private
def check_user_id
puts "check user id: #{user_id}"
puts self.user_id
puts user_id
puts user
if self.user.blank?
"set user id"
user_id = campaign.user_id if campaign
end
end
end
的问题是,self.user.blank?条件永远不会被满足。如果我尝试user.nil?或者除非用户我总是得到相同的东西,即使user_id和用户都是零。我也尝试使用self.user.nil这样的自我前缀?等等。
虽然执行check_user_id方法,但为什么条件永远不会满足? 创建新潜在客户时,设置此关系的最佳方式是什么?
牵头下创建活动,使用户协会应正确设置:
c = Campaign.new
l = c.leads.new
l.email = '[email protected]'
l.save
感谢您的帮助!
谢谢你的答案..它现在的工作!有没有更好的方法来自动设置关系分配?也许是:通过设置模型关系? – Aljaz
您的代码非常短的版本是:'self.user_id || = campaign.try(:user_id)'(一行) – MrYoshiji