Tag: activerecord

如何在非rails应用程序中使用ActiveRecord创建新的MySQL数据库?

我正在构建一个使用ActiveRecord的非rails纯ruby应用程序。 我想写一个rake文件,为它创建一个数据库和表。 我尝试以下代码 namespace :db do task :create do conn = ActiveRecord::Base.connection create_db = “CREATE DATABASE foo_dev” conn.execute(create_db) end end 但这给了我 ActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished 错误。 嗯,这很明显,因为我没有将ActiveRecord连接到任何数据库。 我该怎么办? 编辑:我想创建一个MySQL数据库。

有没有办法使用HashWithIndifferentAccess序列化ActiveRecord的JSON属性?

我在Rails应用程序中使用ActiveRecord::ConnectionAdapters::PostgreSQLAdapter 。 假设我有一个架构: create_table “foo”, id: :bigserial, force: :cascade do |t| t.string “name” t.jsonb “data”, null: false end 现在假设我运行以下代码: class Foo ‘foobar’, :data => {:a => ‘hello’}) my_foo = Foo.where(:name => ‘foobar’).first! puts my_foo.data[:a] puts my_foo.data[‘a’] 输出将是: # nil # ‘hello’ 是否可以让ActiveRecord使用HashWithIndifferentAccess自动反序列化jsonb类型?

与核心的find_by()和FinderMethods的有什么区别?

目前我正在研究一个gem,它会覆盖ActiveRecords。 通过努力,我偶然发现了两个不同的find_by实现。 一个是核心 ,它使用某种缓存,而FinderMethods模块中的一个直接调用。 这两个实现有什么区别? 什么时候使用?

ror – 在has_many和belongs_to的两端包含外键?

我inheritance的代码有: class Graphic ‘asset_id’, :conditions => ‘asset_type_id = 5’, :order => ‘created_at’, :dependent => :destroy class Comment :asset_id 在我看来,像has_many不应该有foreign_key(它在belongs_to中被引用,我相信)但我不确定,你知道吗? 也就是说 class Graphic ‘asset_type_id = 5’, :order => ‘created_at’, :dependent => :destroy class Comment :asset_id

有没有办法使用AREL进行自定义关联?

model Post # ActiveRecord associations have tons of options that let # you do just about anything like: has_many :comments has_many :spam_comments, :conditions => [‘spammy = ?’, true] # In Rails 3, named scopes are ultra-elegant, and let you do things like: scope :with_comments, joins(:comments) end 有没有办法使用AREL或其他更精简的语法来定义自定义关联,就像命名范围一样优雅? 更新 我认为将这种细节放入一个关联中并不是一个好主意,因为关联应该总是/大多数定义模型之间的基本关系。

如何在Ruby on Rails中加入ActiveRecord查询中的间接关联?

在我的Ruby on Rails应用程序中,我有一个模型Instance属于另一个模型Zone 。 Zone模型本身属于Country模型。 我正在获取一组Instance对象,如下所示: scope :thisweek, -> { joins(:zone).where(zones: {created_at: …}).includes(:zone) 我想将Country加入Zone和Instance ,然后根据zone.country.name字段对结果Instance进行排序。 有人可以帮我吗?

活动记录方法与否

我似乎无法在任何地方找到答案。 我知道我能做到: Item.where(:color => ‘red’) 获取所有红色物品,但我如何获得颜色不是红色的所有物品?

在JSON / XML中渲染非activerecord对象

我正在使用ruby gem whois测试一个小的whois API,并且由于whois响应的格式非常有趣,有时我被要求不使用ActiveRecord来保存响应。 简单地说,这是它的工作原理: 用户从视图中输入表单中的域名(操作’lookup’=创建请求) 控制器捕获参数然后通过实例化请求对象[包含whois响应]发送到模型(非activerecord) Model使用whois gem并将回复发送回控制器 Controller以不同的格式(html / json / xml)发送响应,但只有html获取对象。 这是我的控制器“请求”的动作“查找”的代码: def lookup domain = params[:domain] @request = Request.new.search(domain) respond_to do |format| if @request != nil format.html format.json { render :json => @request} format.xml {render :xml => @request} else format.html { render :new } format.json { render json: @request.errors, status: :unprocessable_entity […]

Rails:如何在activerecord中查询模型的时间范围,而不是日期

我有一个带time属性的模型。 它是用户想要收到电子邮件的配置,即美国东部标准时间下午5点。 它以21:00:00存储在数据库中。 我想按范围查询。 例如,我希望每个用户的提醒时间在20:55:00到21:05:05之间。 Rails似乎奇怪地处理时间属性,因为它想要将它显示为完整的DateTime,因此数据库有21:00:00但是当加载到rails时,它显示为2000-01-01 17:00:00。 我的代码现在看起来像: scope :receives_report_reminder_at, -> (time) do start = (time – 5.minutes).strftime(‘%T’) ending = (time + 5.minutes).strftime(‘%T’) where(notification_report_reminder_time: start…ending) end 这适用于我的测试用例,但是当我在测试之外尝试时它不起作用。 思考? 有没有一种正确的方法来处理场景,或者我错了吗?

积极的记录。 Model.Find.last

我在Trade和Execution之间有一个ActiveRecord关系。 我可以得到 Trade.executions #returns all exeuctions realated to the Trade 如果我做 Trade.executions.last 似乎似乎返回基于ID的最后一个执行记录。 这是根据ID检索与Trade相关的最后一条执行记录的正确方法吗?