我想在我的模型中有一个 before_create 方法,它将检查模型是否与另一个模型(用户)有关联/关系,并设置它以防关系为零。
问题是我不知道为什么以下条件不会被执行,尽管 user 和 user_id 变量是 nil。
关系是:
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 和 user 是 nil。我还尝试使用 self.user.nil 之类的 self 前缀?, ETC。
为什么尽管执行了 check_user_id 方法,但条件从未满足?当我创建新潜在客户时,设置这种关系的最佳方式是什么?
潜在客户是在 Campaign 下创建的,因此应正确设置用户关联:
c = Campaign.new
l = c.leads.new
l.email = 'test@test.com'
l.save
感谢帮助!