最好是传递一个简单的ID并让多个ActiveRecord查找查询:
def some_method(user_id)
@user = User.find(user_id)
SomeClass.call_method(user_id)
end
class SomeClass
def call_method(user_id)
@user = User.find(user_id)
end
end
或者将实际的ActiveRecord对象传递给不同的方法?
def some_method(user_id)
@user = User.find(user_id)
SomeClass.call_method(@user)
end
class SomeClass
def call_method(user)
@user
end
end
答案 0 :(得分:0)
第二个选项似乎是更好的选项,因为您只进行一次数据库调用。 在第一个版本中,第二个数据库调用可能会被缓存,因此可能很快,但似乎没必要。
同样从设计的角度来看,我认为给方法一个User对象而不是id是更好的做法。通过为方法提供对象,它不必知道有关如何检索User对象的任何信息。因此,如果您更改了应用程序以便用户来自不同的数据源(例如Web服务),则此方法不会受到影响。