Mal*_*har 6 ruby model ruby-on-rails
所以基本上我有一个控制器.这样的事情
def show
@user = User.find[:params[id]]
#code to show in a view
end
Run Code Online (Sandbox Code Playgroud)
用户具有名称,地址,性别等属性.如何在模型中访问这些属性?我可以为名称重载模型访问器,例如将其替换为我自己的值或将其连接到它.就像在此方法的show.html.erb视图中一样,我可能希望将用户的名称与'Mr.'连接起来 或'太太' 取决于性别?这怎么可能?
我会毫不犹豫地覆盖属性,而是像这样添加到模型中:
def titled_name
"#{title} #{name}"
end
Run Code Online (Sandbox Code Playgroud)
但是,您可以直接访问这些字段,如下所示:
def name
"#{title} #{self[:name]}"
end
Run Code Online (Sandbox Code Playgroud)
您可以在模型中创建虚拟属性来表示这些结构.
这个主题有一个railscast,但总的来说,你可以在你的模型中做这样的事情
def full_name
[first_name, last_name].join(' ')
end
def full_name=(name)
split = name.split(' ', 2)
self.first_name = split.first
self.last_name = split.last
end
Run Code Online (Sandbox Code Playgroud)
如果您希望在读取或写入时显式更改属性的值,则可以使用read_attribute或write_attribute方法.(虽然我认为这些可能会被弃用).
这些工作通过用您自己的属性替换属性的访问器方法.例如,分支标识符字段可以输入为xxxxxx或xx-xx-xx.因此,当数据存储在数据库中时,您可以更改branch_identifier =方法以删除连字符.这可以这样实现
def branch_identifier=(value)
write_attribute(:branch_identifier, value.gsub(/-/, '')) unless value.blank?
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11584 次 |
| 最近记录: |