gpt4 book ai didi

ruby-on-rails - Rails 3.2 中具有 ActiveRecord 关联的无表模型

转载 作者:行者123 更新时间:2023-12-04 05:58:21 30 4
gpt4 key购买 nike

我的应用程序配置包括一些需要在 AR 关系中使用的值。我知道这是一个奇怪且可能犯罪的尝试,但我需要将配置保持为文本文件,老实说,我认为我有一个很好的无表模型案例。不幸的是,我无法说服 AR(Rails 3.2)不要寻找表格。我的无 table 模型:

class Tableless < ActiveRecord::Base

def self.table_name
self.name.tableize
end

def self.columns
@columns ||= [];
end

def self.column(name, sql_type = nil, default = nil, null = true)
columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type.to_s, null)
end

def self.columns_hash
@columns_hash ||= Hash[columns.map { |column| [column.name, column] }]
end

def self.column_names
@column_names ||= columns.map { |column| column.name }
end

def self.column_defaults
@column_defaults ||= columns.map { |column| [column.name, nil] }.inject({}) { |m, e| m[e[0]] = e[1]; m }
end

def self.descends_from_active_record?
return true
end

def persisted?
return false
end

def save( opts = {} )
options = { :validate => true }.merge(opts)
options[:validate] ? valid? : true
end
end

这是由实际模型扩展的:
class Stuff < Tableless

has_many :stuff_things
has_many :things, :through => :stuff_things

column :id, :integer
column :name, :string
column :value, :string

def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
end

这都是基于找到的代码 here on SOelsewhere ,但唉,我得到 SQLException: 没有这样的表: 东西: 有任何线索吗?

最佳答案

对于 Rails >= 3.2 有 activerecord-tableless gem 。它是创建无表 ActiveRecord 模型的 gem ,因此它支持验证、关联、类型。

当您在 Rails 3.x 中使用推荐的方式(使用 ActiveModel 而不是 ActiveRecord)来执行此操作时,不支持关联或类型。

关于ruby-on-rails - Rails 3.2 中具有 ActiveRecord 关联的无表模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10729289/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com