2016-03-05 27 views
0

我是新来的大礼包也仍然在学习Rails的施普雷商贸 - 编辑用户对象属性

我不完全明白,我怎么可以添加新的属性,施普雷::用户对象,这样我可以设置向注册到我的网站的用户提供更多数据。

按照不那么清晰的文档,我知道我应该创建一个User类,并添加喜好:

class User < ActiveRecord::Base 
    preference :hot_salsa, :boolean 
    preference :dark_chocolate, :boolean, :default => true 
    preference :color, :string 
    preference :favorite_number, :integer 
    preference :language, :string, :default => "English" 
end 

但我不知道我应该在哪里保存此文件或如何命名它根本就没有。

我在正确的道路上吗?

+1

恕我直言这部分是有据可查的。 https://guides.spreecommerce.com/developer/logic.html#extending-classes 您可以创建migraton,eval类并更改或扩展视图,如@Saurabh提及的链接 – Jakub

回答

1

你可以使用装饰器来做到这一点。您可以创建装饰器为app/models/spree/user_decorator.rb并在其中添加您的代码。

Spree::User.class_eval do 
    preference :hot_salsa, :boolean 
    preference :dark_chocolate, :boolean, :default => true 
    preference :color, :string 
    preference :favorite_number, :integer 
    preference :language, :string, :default => "English" 
end 

查找超文本或扩展代码here的文档。

0

您添加的字段不应该用作首选项,因为首选项的值会被序列化并存储起来,如果您想对这些字段执行一些过滤/查询,那么这将不会有用。

相反,这些应该是用户模型(spree_users表中的列)的

  • 单独属性。
  • 单独的新表的属性可以是spree_user_detailsbelongs_to :user),其中用户模型具有has_one关联。