我有一个简单的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
但我想知道是否有更优雅的方式:)
答案 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回调的使用是最干净,最好的解决方案。