相关疑难解决方法(0)

attr_accessor和attr_accessible之间的区别

在Rails中,attr_accessor和之间有什么区别attr_accessible?根据我的理解,using attr_accessor用于为该变量创建getter和setter方法,以便我们可以像Object.variable或那样访问变量Object.variable = some_value.

我读到这attr_accessible使得该特定变量可供外界使用.有人可以告诉我这是什么区别

ruby ruby-on-rails

235
推荐指数
4
解决办法
12万
查看次数

覆盖ActiveRecord属性方法

我正在谈论的一个例子:

class Person < ActiveRecord::Base
  def name=(name)
    super(name.capitalize)
  end
  def name
    super().downcase  # not sure why you'd do this; this is just an example
  end
end
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但我刚刚阅读了ActiveRecord :: Base文档中覆盖属性方法的部分,并建议使用read_attributewrite_attribute方法.我认为在上面的例子中我所做的事情肯定有问题; 否则,为什么他们会将这些方法作为覆盖属性方法的"正确方法"?他们也在逼迫一个更丑陋的习语,所以必须有充分的理由......

我真正的问题是:这个例子有问题吗?

oop activerecord ruby-on-rails

147
推荐指数
3
解决办法
6万
查看次数

Ruby on Rails - 创建和使用自定义方法

我对Rails很新,并且非常感谢任何帮助.我创建了以下方法:

  def name_fix
    name = self.split
    mod_name = []
    name.each do |n|
      n.split("")
      if n[0]
        n.upcase
      else
        n.downcase
      end
      mod_name.push(n)
    end
    mod_name.join
  end
Run Code Online (Sandbox Code Playgroud)

我想在我的Controller中使用这个方法:

def create
  @patient = Patient.new(params[:patient])
  @patient.name = params[:params][:name].name_fix
  if @patient.save
    redirect_to patients_path
  else
    render :new
  end
end
Run Code Online (Sandbox Code Playgroud)

我怎样才能完成这个?此方法是否位于我的模型或控制器中?以前,我遇到了一个未定义的方法错误.

注意:我确信有一种方法可以更好地编写代码.我也很感激你的帮助.

ruby ruby-on-rails

5
推荐指数
1
解决办法
1194
查看次数

标签 统计

ruby-on-rails ×3

ruby ×2

activerecord ×1

oop ×1