0

Rails 有没有一种方法可以在没有“漂亮的生成器”的情况下操作数据库字段和相应的访问器方法?

我希望用户,只要他们有特权,就能够操作数据库结构,也就是说,至少,添加或删除列。特权用户应该可以“添加”一些列。

假设我有一个对象/表artist,它应该“动态”接收“出生日期”、“玩过”、“已售出的副本”等列


不确定是不是抄袭。Rails 是否不鼓励用户这样做需要一个初步的决定。(如果是这样的话=>当然是一些noSQL解决方案)

至少在纯红宝石中,像这样动态地将属性添加到现有模型/类很容易

Test.class_eval do; attr_accessor "new_attribute"; end

Test.new.new_attribute = 2=> 2按预期返回

为了创建或操作自定义输入掩码/模型:我可以不手动按照生成器的方式手动调用ActiveRecord::Migration方法,例如add_column为 ORM 创建 getter/setter-methods 吗?

如果是或否,在这两种情况下,他们从哪一个开始?

谢谢!

4

1 回答 1

0

我不知道有任何优雅的方式允许对象动态创建新列。这不是一个好的应用程序设计,并且会导致您的数据库效率低下。

您可以使用Rails中的ActiveRecord 关联来实现您寻求的类似功能。这是使用相关属性表的 Artist 模型的简单示例。

class Artist < ActiveRecord::Base
  has_many :attributes
end

class Attribute < ActiveRecord::Base
  belongs_to :artist
end

通过这种关联,您可以允许您的 Artist 类创建/编辑/销毁属性。ActiveRecord 将使用数据库中的外键来跟踪两个模型之间的关系。

如果这对您不起作用,那么您的下一个最佳选择是查看 NoSQL 数据库,例如MongoDB,它可以在架构中提供更大的灵活性。使用 NoSQL,您可以在没有预定义架构的情况下方便地插入数据。

于 2015-02-04T06:28:49.687 回答