假设我有一个用户模型,我想用类方法生成一个用户。
我以前做过这样的事情:
def self.generate_user(params)
user = user.new
# Some work on the user model
user.save ? user : nil
end
有了这个,我可以很容易地知道用户是否被创建,但是,我无法访问它的错误消息。
所以我正在考虑这两个选项:
def self.generate_user(params)
user = user.new
# Some work on the user model
return user.save, user
end
然后我必须以这种方式得到结果:ret, user = User.generate_user(params)
valid?
def self.generate_user(params)
user = user.new
# Some work on the user model
user
end
然后:
user = User.generate_user(params)
if user.valid?
# Do stuff
end
您更喜欢哪种选择?你有其他的吗?也许使用例外?
答案 0 :(得分:1)
例外,绝对。如果你使用create!并且它失败了,那么更像Ruby和ActiveRecord会引发异常:
def self.generate_user(params)
User.create! do |u|
# Do some stuf wth user
end
end
begin
user = User.generate_user(params)
rescue ActiveRecord::RecordInvalid => e
# Find errors here : e.record.errors
# Something on rescue
end
答案 1 :(得分:0)
我会尝试:
def self.generate_user(params)
user = User.create do |u|
# Do some stuff with user
end
user
end
然后:
user = User.generate_user(params)
if user.valid? # or user.persisted?
# alright
end