2015-04-02 61 views
0

我想插入使用public_activity宝石值活动表,但我不能够存储在正确的格式记录的参数列SQL。如何实现这一点??Public_activity宝石镶参数中的Rails 3

ActiveRecord::Base.connection.execute("INSERT INTO `activities`(`trackable_id`, `trackable_type`, 
     `owner_id`, `owner_type`, `key`, `parameters`, `created_at`, `updated_at`) 
     VALUES ('#{event_resource.resource_id}', '#{event_resource.resource_type}', '#{event.user.id}', 
     'User', '#{event.action_type}', ':description: '#{event.description}', '#{event.created_at}', '#{event.updated_at}')") 

回答

0

你真的需要阅读how ActiveRecord works,这可能不是完全正确的,但它应该给你一个想法,查询如何在轨完成

Activity.create(
    trackable: event_resource, 
    owner: event.user, 
    key: event.action_type, 
    parameters: { description: event.description } 
    created_at: event.created_at, 
    updated_at: event.updated_at 
) 

你可能需要到哈希转换为字符串格式,JSON也许

{ description: event.description }.to_json 
+0

感谢您的建议,但我导入event_resource表记录到活动表,对于我不能能够设置可追踪:event_resour ce.resource,其未来的零,所以我想它作为SQL INSERT在这种情况下倾斜设置参数哈希 – 2015-04-02 08:55:13

+0

仍实现,你不需要去尽可能将整个事情字符串,你失去了所有验证,回调,以及数据的敏感,你可以用'trackable_type'并在回答'trackable_id'取代'trackable'我提供,各自有各自相应的数据。 – 2015-04-02 08:57:52

+0

试图像这样** PublicActivity :: Activity.create(trackable_id:event_resource.resource_id,trackable_type:event_resource.resource_type,键:event.action_type,参数:{描述:event.description},所有者:event.user,created_at: event.created_at)**但结果**#“海滩湾L”},created_at:“2015年4月2日9时04分28秒”> **,可追踪的ID,类型来作为零也它不是设置created_at领域 – 2015-04-02 09:09:39