新手问题 不属于 Model 中的字段一般怎么处理?

Unknow user · July 06, 2012 · Last by jjym replied at July 07, 2012 · 2810 hits

例如一般密码会输入 2 次,实际在 Model 中应该只有一个字段,那么这个重复输入的密码在表单和在 action 是怎么处理的呢?

像你说的这种情况,看这里文档

其它的情况,你可以在 model 中定义新的属性。

Unknow user #2 July 06, 2012

#1 楼 @qichunren 你给的文档好像说的也是定义在 model 中的,如果不定义在 model 中要怎么做呢?

#2 楼 @mappings 后端验证属于具体业务逻辑,要放到 model 中,与 view 和 controller 无关。

密码验证一楼正解,对于 model 中定义新的属性一般的可以用attr_accessor

稍微复杂点的添加 method.

class User < ActiveRecord::Base
  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
end
Unknow user #4 July 06, 2012

#3 楼 @camel 你这个也是在 model 中,如果不在 model 中怎么做呢。 好多临时字段与 model 无关,放在 model 中也不太合适吧。

#4 楼 @mappings 我感觉,如果不放到 model 中就违背了 rails 的设计哲学了。 Skinny Controller, Fat Model

Unknow user #6 July 06, 2012

#5 楼 @camel 看来搞在 model 里面是主流方式了,非常感谢!

第二个貌似仅用来确认密码输入是否正确,难道这个也需存起来?

看看 model 的 validates,其中有 confirmation.

8L 正解 LZ 可以看看这个 http://guides.rubyonrails.org/active_record_validations_callbacks.html 好像是验证一个不存在的字段就作为一个虚拟字段 如果你validates :password_confirmation,presence: true 那么不通过验证会有 error。但是数据库中无此字段,所以即使通过验证这个字段也不会保存。这个字段仅在内存中存在

You need to Sign in before reply, if you don't have an account, please Sign up first.