使用Ruby on Rails的自定义属性/用户定义属性

时间:2013-07-29 18:25:37

标签: ruby-on-rails ruby activerecord user-defined-types

是否有Ruby gem可以帮助我们构建允许用户为应用程序实体/表单定义自定义属性的应用程序?这在ERP或CRM应用程序中非常常见。

我看了https://github.com/latortuga/has_magic_columns,看起来很有希望,但自述文件说它不是生产就绪的。我也不喜欢代码在同一个字符串列中存储不同数据类型的事实。

我可以使用NoSQL数据库来帮助我将自定义属性存储在无模式数据库中,但我仍然需要创建一个存储自定义属性配置的数据库结构。

2 个答案:

答案 0 :(得分:1)

你有没有看过新的rails 4活跃记录hstore?这允许您在PostgreSQL内存储键值对。

http://edgeguides.rubyonrails.org/4_0_release_notes.html#active-record-notable-changes

答案 1 :(得分:1)

您可以使用Rails 3.2中出现的ActiveRecord :: Store。它为您提供了您正在寻找的内容:

  • 将序列化存储到数据库中的一个文本列
  • 您可以根据需要添加任何属性
  • 另外,您可以定义公共属性的访问者

示例:

class User < ActiveRecord::Base
  store :settings, accessors: [ :color, :homepage ], coder: JSON
end

u = User.new(color: 'black', homepage: '37signals.com')
u.color                          # Accessor stored attribute
u.settings[:country] = 'Denmark' # Any attribute, even if not specified with an accessor

# There is no difference between strings and symbols for accessing custom attributes
u.settings[:country]  # => 'Denmark'
u.settings['country'] # => 'Denmark'

# Add additional accessors to an existing store through store_accessor
class SuperUser < User
  store_accessor :settings, :privileges, :servants
end

粘贴/更多信息: http://api.rubyonrails.org/classes/ActiveRecord/Store.html