我找不到任何参考来解释这两个定义之间的区别。 使用这两个定义的目的是什么?
def user_name=(name)
user= User.where(:name => name)
if user
self.user_id = user.id
else
errors[:user_name] << "Invalid name entered"
end
end
def user_name
User.find(user_id).name if user_id
end
答案 0 :(得分:1)
第一个(带有=符号)是属性设置器,第二个是属性getter。
使用setter,您要为属性设置一个值,使用getter检索该值。
Trying to learn / understand Ruby setter and getter methods
http://tmonrails.wordpress.com/2009/08/05/ruby-setter-and-getter-methods/
答案 1 :(得分:0)
你如何在Ruby中编写getter / setter。以下是Java中的相同内容:
// Java: | // Ruby:
|
public void setUserName(String name) { | def user_name=(name)
... | ...
} | end
|
public String getUserName() { | def user_name
... | ...
end | end
基本上上面代码的作用是什么,
def user_name=(name)
# Check if the user with given user_name exists
# If it exists, then set the user_id to that user
# Otherwise mark an error
end
def user_name
# Find the user with current user_id and return their name
end