Tag: 属性

每当有人试图批量分配受保护的属性时,都会抛出exception

我正在修复客户端应用程序中的一些批量分配漏洞,我想确保Rails没有默默地丢弃大规模分配受保护属性的尝试。 相反,我想抛出一个exception,所以我可以调查。 即,只要这通常出现在日志中: WARNING: Can’t mass-assign these protected attributes: … 我想抛出exception(或者另外) 编辑:我正在使用Rails 2.3.4

输入字段方法(text_area,text_field等)如何从form_for块中的记录中获取属性值?

我有一个标准的Rails 2.3.5应用程序和一个名为Post的模型。 Post有一个名为url的属性,并定义了以下getter: def url p = ‘http://’ u = self[:url] u.starts_with?(p) ? u : “#{p}#{u}” end 如果我加载script/console ,我可以执行Post.first.url并获得所需的结果(例如,如果属性的真值是foo.com,则返回http://foo.com ) 但是,如果我有一个form_for块,并执行类似form.text_field :url ,它将不会返回带有http:// form.text_field :url的url; 相反,它只是返回foo.com form_for如何在ActiveRecord模型上访问属性? 它似乎绕过任何超载的getter。

轨。 保存时更新模型属性

认为这是一项简单的任务,但我对这个问题有点担心: 想要在模型保存时更新模型的其中一个属性,从而在模型中进行回调: after_save:calculate_and_save_budget_contingency def calculate_and_save_budget_contingency self.total_contingency = self.budget_contingency + self.risk_contingency self.save #=>这不起作用…. self.update_attribute:budget_contingency,(self.budget_accuracy * self.budget_estimate)/ 1 结束 并且网络服务器回显消息ActiveRecord::StatementInvalid (SystemStackError: stack level too deep: INSERT INTO “versions” 这基本上告诉我有一个infite循环保存到模型, after_save然后我们再次保存模型…进入另一个saving模型的循环 这个模型属性计算只是停留在这个时间点。 如果有人遇到过这个问题,并且有一个漂亮的俏皮/ rails解决方案,请在下面给我发一条消息,谢谢

我怎样才能覆盖attr_readonly?

我有一个使用attr_readonly保护的属性,以防止用户改变字段。 我希望能够使用实例方法更改它。 这可能吗?

Ruby on Rails:嵌套属性,belongs_to关系

我有一个具有当前位置字段(城市和国家/地区)的用户实体。 为了保存这些信息,我创建了一个名为Location的实体has_many Users。 我不完全确定我是否应该在用户模型中添加“has_one”或“belongs_to”,但是如果我想要它拥有该位置的外键我应该放入“belongs_to”。 我还希望能够在编辑用户时编辑用户的当前位置。 所以我使用的是嵌套属性。 但是当我编辑用户时,我每次都会添加一个新的位置,而不会将其与已编辑的用户相关联。 你能帮我吗? 我的代码如下: #User Model class User ‘Location’ accepts_nested_attributes_for :current_location end #Location Model class Location :edit end end

Rails在参数中序列化整数属性,但不保存到模型实例中

所以我有以下模型,其中包含序列化的整数属性 耙文件: class CreateCompanyAssetStats < ActiveRecord::Migration def change create_table :company_asset_stats do |t| t.integer :companyID t.string :geo t.integer :assetType t.date :startTime t.date :endTime t.timestamps end end end 模型: serialize :companyID, Array serialize :assetType, Array serialize :geo, Array 在我看来,我有一个表单,我有一个多选下拉列表,将值存储到params中: Multi Select <option value=> 生成的参数格式如下:参数:{“utf8”=>“✓”,“authenticity_token”=>“2WFx3 / 3TyHsjobwRaLJYW2jt4JR5ucvtgyBK3IxKTqs =”,“company_asset_stats”=> {“startTime”=>“2013-07-31T00 :00-07:00“,”endTime“=>”2013-07-31T00:00-07:00“,”companyID“=> [”1864“]},”commit“=>”创建“} 最后我的创建控制器执行以下操作: def create @company_asset_stats = CompanyAssetStats.new(params[:company_asset_stats]) if […]

rails中的initialize方法有什么作用

我试图围绕使用initialize方法的目的。 在Hartl的教程中,他使用了这个例子。 def initialize(attributes = {}) @name = attributes[:name] @email = attributes[:email] end 是否初始化将实例变量@name和@email设置为属性,如果是,为什么我们有参数attributes = {} ?

指定传递给JSON对象的Rails对象的属性

我在Rails中有一个具有属性A,B,C,D和E的对象。当通过JSON对象将此对象传递回客户端时,如何告诉rails控制器仅包含属性A和D. JSON对象? 在我的Users控制器中,我的代码如下: @user = User.find(params[:id]) respond_to do |format| format.html format.json { render :json => @user} end 但是,此代码有效,返回的JSON对象包含@user对象的所有属性。 在将任何内容发送回客户端之前,如何限制JSON对象中包含的属性? 更新:lucapette提供了一些关于幕后发生的事情的好背景。 由于有时我可能希望返回所有属性,因此我最终使用以下代码: format.json { render :json => @user.to_json(:only => [“id”])}

在Devise中将name属性添加到`User`

我正在尝试为Devise提供的User模型添加name属性。 我在我的数据库中添加了一个“名称”列,并更改了注册视图,以便它询问用户的名字: Sign up resource_name, :url => registration_path(resource_name)) do |f| %> “devise/shared/links” %> 它允许我登录,但是当我这样做后检查数据库时,请输入name: nil 。 我是否必须向Devise的User控制器添加内容? 谢谢!

Ruby on Rails中的自定义模型属性(列名)标题

我可以添加自定义模型属性标题,因此表单可以自动呈现它们而不是“prettied”列名吗? 例如,我在我的模型中应用了一些方法,它定义了属性标题: imaginary_method_which_defines_attribute_title :description, “Aprašymas” 所以我不需要在每个表单标签助手中写标题: 表单助手自动使用我在模型中声明的属性标题: 呈现… Aprašymas