Tag: activerecord

Rails将ActiveRecord与Business Logic分离的应用程序

我最近遇到了Robert Martin的(Uncle Bob)关于如何根据用例构建rails应用程序的主题演讲。 我发现这非常有趣。 以下是主题演讲的链接: 建筑:失落的岁月 这是一个示例项目,根据罗伯特·马丁在其主题演讲中提到的原则构建应用程序: Guru Watch 我想知道是否有完善的rails应用程序以这种方式构建( 用例驱动方法/实体 – 控制 – 边界架构/从前端解耦后端 )

Rails中的高级SQL

我有2个型号 class User < AR has_many :friends end class Friend < AR # has a name column end 我需要找到所有与’Joe’和’Jack’都是朋友的用户 知道我怎么能在铁轨上做到这一点?

validates_presence_of与belongs_to关联,正确的方式

我正在调查validates_presence_of实际上是如何工作的。 假设我有两个模型 class Project < ActiveRecord::Base […] has_many :roles end 和 class Role < ActiveRecord::Base validates_presence_of :name, :project belongs_to :project end 我想要它,以便角色总是属于现有项目,但我只是从这个例子中发现,这可能导致无效(孤立)角色保存到数据库中。 因此,正确的方法是在我的Role模型中插入validates_presence_of :project_id ,它似乎有效,即使我认为在语义上更有意义来validation项目的存在而不是项目ID。 除此之外,如果我只是validationproject_id的存在,我认为我可以放置一个无效的id(对于一个非现有的项目),因为默认情况下AR不会为迁移添加完整性检查,即使我手动添加了一些DB不支持它们(即MySQL与MyISAM或sqlite)。 这个例子certificate了 # with validates_presence_of :name, :project, :project_id in the role class Role.create!(:name => ‘foo’, :project_id => 1334, :project => Project.new) AREL (0.4ms) INSERT INTO “roles” (“name”, “project_id”) VALUES (‘foo’, […]

t。模型中迁移vs belongs_to的参考?

我正在阅读Rails指南,我找到了以下代码行: class CreateComments < ActiveRecord::Migration def change create_table :comments do |t| t.string :commenter t.text :body t.references :post t.timestamps end add_index :comments, :post_id end end 我还阅读了Michael Hartl的书,Rails Tutorial,我没有找到任何关于上面代码中使用的“t.references”的内容。 它有什么作用? 在Michael的书中,我在模型中使用了has_many和belongs_to关系,而在迁移中没有使用任何关系(不是事件t.belongs_to)。

Rails / ActiveRecord has_many through:未保存对象的关联

让我们使用这些类: class User < ActiveRecord::Base has_many :project_participations has_many :projects, through: :project_participations, inverse_of: :users end class ProjectParticipation < ActiveRecord::Base belongs_to :user belongs_to :project enum role: { member: 0, manager: 1 } end class Project < ActiveRecord::Base has_many :project_participations has_many :users, through: :project_participations, inverse_of: :projects end user可以作为member或manager参与许多projects 。 连接模型称为ProjectParticipation 。 我现在在使用未保存对象上的关联时遇到问题。 以下命令的工作方式与我认为它们应该有效: # first example u = […]

Rails ActiveRecord – 在多个属性上搜索

我正在实现一个简单的搜索function,它应检查username,last_name和first_name中的字符串。 我在旧的RailsCast上看过这个ActiveRecord方法: http://railscasts.com/episodes/37-simple-search-form find(:all, :conditions => [‘name LIKE ?’, “%#{search}%”]) 但是我如何设置它以便在name,last_name和first name中搜索关键字并返回记录,如果其中一个字段与该术语匹配? 我也想知道RailsCast上的代码是否容易出现SQL注入? 非常感谢!

Rails嵌套属性:至少需要两条记录

如何才能使提交产品至少需要两个选项记录? class Product :destroy accepts_nested_attributes_for :options, :allow_destroy => :true, :reject_if => proc { |attrs| attrs.all? { |k, v| v.blank? } } validates_presence_of :user_id, :created_at validates :description, :presence => true, :length => {:minimum => 0, :maximum => 500} end class Option {:minimum => 0, :maximum => 60} end

如何在Rails中管理非自动增量主键?

我有很多情况,我希望在使用Rails时有一个非自动增量主键。 示例:我在A和B之间有一对一的关系.B描述了添加到A的一些特定function,因此在没有A的情况下不能存在。所以我们有: A有一个B. B属于A. 自然的想法是将B.A_id作为主键。 所以我在迁移中尝试了create_table b, :id=>false ,在B的模型中set_primary_key :a_id ,但它没有在数据库中创建实际的主键。 我想要它们(以及外键),因为数据库不仅会被这个Rails应用程序使用。 如果我用执行创建主键,它们不会落在schema.rb中,这会受到伤害。 现在我正在考虑一种解决方法:只要对该列有唯一约束,我就可以没有PK约束,所以我可以在迁移中使用Rails的add_index,这似乎更优雅。 有什么建议?

Ruby On Rails – Geocoder – 接近条件

我在我的应用程序中使用GeoCoder。 现在我需要在我的数据库中搜索接近某个位置或具有特定属性集的对象。 我想在一个数据库查询中执行此操作,因为数据库非常庞大。 我想有类似的东西 Spot.near([lat,long],distance).where(“visited = ?”,true). 距离和被访问属性应与OR组合,而不是与AND组合。 有谁知道如何做到这一点? 谢谢!

如果您使用belongs_to而没有相应的has_one会发生什么?

我有一个Item的核心模型,以及一个从自定义源填充它的脚本(想想,RSS feed)。 在饲料中,每个项目都用guid标识; 在我的系统中,Item只有一个自动生成的id主键。 我想要,比方说, ItemFeedInfo映射ItemFeedInfo guid->id (这样我可以区分新的和修改的项目) 我正在考虑创造 class ItemFeedInfo belongs_to :Item end 我宁愿不修改Item因为它的定义在逻辑上独立于ItemFeedInfo但是,我可以找到使用belongs_to每个例子,提到了has_one对应物。 需要吗?