Questions tagged «rails-activerecord»

在Ruby on Rails框架中使用Active Record模式实现对象关系映射(ORM)。


12
find vs find_by vs where
我是新手。我看到有很多找到记录的方法: find_by_<columnname>(<columnvalue>) find(:first, :conditions => { <columnname> => <columnvalue> } where(<columnname> => <columnvalue>).first 而且看起来它们所有人最终都生成完全相同的SQL。另外,我认为查找多个记录也是如此: find_all_by_<columnname>(<columnvalue>) find(:all, :conditions => { <columnname> => <columnvalue> } where(<columnname> => <columnvalue>) 是否有经验法则或推荐使用哪个准则?





2
在Rails 4中使用has_many:through:uniq时弃用警告
在has_many:through中使用:uniq => true时,Rails 4引入了弃用警告。例如: has_many :donors, :through => :donations, :uniq => true 产生以下警告: DEPRECATION WARNING: The following options in your Goal.has_many :donors declaration are deprecated: :uniq. Please use a scope block instead. For example, the following: has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment' should be rewritten as the …

2
将列类型更改为Rails中的更长字符串
在第一次迁移时,我content根据注释的gem 在列上声明了字符串Activerecord使其为string(255)。 将应用程序推送到使用postgres的heroku后,如果我在表单中输入的内容长度超过255,则出现错误 PGError: ERROR: value too long for type character varying(255) 问题是我需要内容包含一个可能非常长的字符串(自由文本,可能是数千个字符) pg会接受什么变量(字符串不适合此操作)? 如何创建迁移以替换该列的类型 谢谢

3
ActiveRecord查找并仅返回选定的列
编辑2 如果您偶然发现此问题,请同时检查两个答案,因为我现在会为此使用pluck 我有一个相当大的自定义数据集,我想返回它作为json回显。一部分是: l=Location.find(row.id) tmp[row.id]=l 但我想做这样的事情: l=Location.find(row.id).select("name, website, city") tmp[row.id]=l 但这似乎不起作用。我将如何使其工作? 谢谢 编辑1 或者,是否可以传递仅包含要包含的属性的数组?

9
回滚失败的Rails迁移
如何回滚失败的Rails迁移?我希望这rake db:rollback会撤消失败的迁移,但是不,它会回滚以前的迁移(失败的迁移减去一个)。而且rake db:migrate:down VERSION=myfailedmigration也不起作用。我已经遇到过几次了,这非常令人沮丧。这是我做的一个简单的测试,可以重复该问题: class SimpleTest < ActiveRecord::Migration def self.up add_column :assets, :test, :integer # the following syntax error will cause the migration to fail add_column :asset, :test2, :integer end def self.down remove_column :assets, :test remove_column :assets, :test2 end end 结果: == SimpleTest:迁移============================================= ======== -add_column(:assets,:test,:integer) -> 0.0932秒 -add_column(:asset,:error) 耙子流产了! 发生错误,所有后来的迁移都被取消: …

12
在Rails 4中向左外联接
我有3种型号: class Student < ActiveRecord::Base has_many :student_enrollments, dependent: :destroy has_many :courses, through: :student_enrollments end class Course < ActiveRecord::Base has_many :student_enrollments, dependent: :destroy has_many :students, through: :student_enrollments end class StudentEnrollment < ActiveRecord::Base belongs_to :student belongs_to :course end 我希望在“课程”表中查询课程列表,该列表在与某个学生相关联的“学生录取”表中不存在。 我发现也许使用Left Join是可行的方法,但似乎rails中的joins()仅接受一个表作为参数。我认为可以执行的SQL查询是: SELECT * FROM Courses c LEFT JOIN StudentEnrollment se ON c.id …


6
将Rails 3.1与多个数据库连接
在ShowNearby,我们一直在进行从PHP到RoR 3.1的巨大迁移,并且我们面临着一些您可能已经解决的一些问题。 我们拥有大量数据,因此我们决定将数据库分成几个我们可以分别处理的数据库。例如,我们的帐户,地点,日志和其他信息被分为几个数据库 我们需要获得移植,装置,模型才能很好地玩耍,到目前为止,情况一直很混乱。我们对解决方案可接受的一些要求: 一个模型应该与其中一个数据库中的一个表相关。 rake db:drop-应该删除我们在database.yml中指定的所有数据库环境 rake db:create-应该创建我们在database.yml中指定的所有数据库环境 rake db:migrate-应该运行到各种数据库的迁移 rake db:test-应获取固定装置并将其放入各种数据库以及测试单元/功能/等 我们正在考虑为每个数据库设置单独的Rails项目,并将它们与ActiveResource连接起来,但是我们认为这不是很有效。你们有没有处理过类似的问题?

12
Rails:在Ruby on Rails中的模型中访问current_user
我需要在Ruby on Rails应用程序中实现细粒度的访问控制。单个用户的权限保存在数据库表中,我认为最好让各自的资源(即模型的实例)来决定是否允许某个用户对其进行读写。每次在控制器中做出这个决定肯定不会很干。 问题在于,为此,模型需要访问当前用户,才能调用。但是,模型通常无法访问会话数据。 may_read?(current_user, attribute_name) 有很多建议可以在当前线程中保存对当前用户的引用,例如在 本博客文章中。这肯定会解决问题。 不过,与Google相邻的结果建议我将对当前用户的引用保存在User类中,我想这是某人想到的,其应用程序不必一次容纳很多用户。;) 长话短说,我感觉到我希望从模型内部访问当前用户(即会话数据)是因为我做错了。 你能告诉我我错了吗?

2
ActiveRecord或查询哈希符号
我知道有3种主要符号为whereActiveRecord方法提供参数: 纯弦 数组 杂凑 指定and的where方法是直截了当: # Pure String notation Person.where("name = 'Neil' AND age = 27") # Array notation Person.where(["name = ? AND age = ?", 'Neil', 27]) # Hash notation Person.where({name: "Neil", age: 27}) 指定or相同的where方法让我很困惑哈希语法。可能吗? # Pure String notation Person.where("name = 'Neil' OR age = 27") # Array notation …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.