强参数问题,无法分配新方法。

时间:2014-05-02 06:04:15

标签: ruby-on-rails ruby

我正在尝试在rails4中的强参数下创建一个新方法,专门用于连接我的'first_name'& 'last_name'并将其重新定义为'full_name' ... attr_accessible这很容易,但现在我有点失落。

任何人都可以告诉我如何进行此更改,以便将来可以致电'full_name'以合并first_namelast_name吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

在user.rb模型中

def full_name
  (first_name + " " + last_name).strip
end

然后使用用户的对象让我们说@user当你调用这个方法时它将返回用户的全名,例如

@user.full_name

答案 1 :(得分:1)

User模型中,您可以这样做

def full_name
 if first_name.present? && last_name.present?
    "#{first_name} #{last_name}" 
  end
 end

def full_name

return first_name.to_s.strip + ' ' + last_name.to_s.strip

end

您可以使用@user.full_name这样的实例来调用它,该实例会显示用户的full_name

答案 2 :(得分:0)

强大的参数

Strong Params只是将params hash中的特定元素传递给您的模型(如果您想将full_name属性传递给模型,则只能使用此元素)

强大的params替换了Rails 4中的attr_accessible;基本上允许您定义哪些参数通过控制器传递给模型。与发送的数据无关;只有你允许或不允许

如果您想设置 full_name属性,请使用强参数,如下所示:

#app/controllers/users_controller.rb
Class UsersController < ApplicationController
    private
    def strong_params
        params.require(:user).permit(:full_name)
    end
end

<强>属性

您在模型中创建一个实例方法来处理其他两个属性

你必须记住Rails只需要数据对象&amp;创建一系列实例方法,使它们可以作为&#34;属性&#34;来访问。如果要显示full_name,您可以在模型中定义公共实例方法以显示数据:

#app/models/user.rb
Class User < ActiveRecord::Base
   def full_name
      first_name + " " + last_name
   end
end

希望这能为您解释。您可以使用RSB的回答

获益