Rails,为每个param需要添加带控制器的强大参数

时间:2015-09-28 09:38:13

标签: ruby-on-rails associations rails-activerecord strong-parameters

我有一个简单的rails嵌套属性参数,我想知道是否有可能在update / create之前添加我自己的值。 就像在线:

@user.approved_terms_time = DateTime.now

我当然可以在Create \ update:

中这样做
@interface Students : NSObject
{

}
@property (nonatomic,strong) NSString   *ID;
@property (nonatomic,strong) NSString   *FirstName;
@property (nonatomic,strong) NSString   *MiddleName;
@property (nonatomic,strong) NSString   *LastN

但我想知道是否有更优雅的方式:)

3 个答案:

答案 0 :(得分:2)

此外,在模型中,您也可以创建回叫。每次创建或更新任何行时,都会在提交任何stmt

之前更新此字段
before_commit :set_approved_terms_time

def set_approved_terms_time
   approved_terms_time = DateTime.now
end

答案 1 :(得分:2)

<强>模型

要添加到@Arpit Vaishnav的答案,应将此类流程提取到model。您追加的数据不依赖于输入,因此可以添加而不受惩罚。

有许多ActiveRecord callbacks为您提供了一种处理您希望添加到模型中的数据的副手。

我个人会使用before_create

#app/models/post.rb
class Post < ActieRecord::Base
   before_create :set_terms_time

   private

   def set_terms_time
       approved_terms_time = DateTime.now
   end
end

答案 2 :(得分:0)

你也可以这样做:

def update_user
  resource_params.merge(user_id: current_user.id)
end

但我认为AR回调的使用是最干净,最好的解决方案。