Tag: orm

什么是Ruby on Rails ORM的外行人的术语? 请解释

我在Ruby on Rails中无法理解ORM。 据我所知,表/列和对象/属性之间存在1:1的关系。 所以每条记录都是一个对象。 究竟什么是模型? 我知道它映射到一张桌子。 我真正追求的是对上述内容的更深入理解。 预先感谢您的帮助 我是一名从PHP到Ruby on Rails的Web开发人员。

ActiveRecord的ORM替代品

从这篇文章开始,决不会破坏ActiveRecord。 我很满意它,但是为了知识和尝试一些选项,ActiveRecord还有其他选择吗? 有没有人使用过其他ORM而不是ActiveRecord,如果是,那么ORM是什么? 请分享您的经验。

Rails在ASP.NET MVC3中具有多个等价物

在.NETentity framework中,具有额外属性(除了ids)和/或通过单独模型将此连接表与其他属性关联的(自定义)连接表的最佳方法是什么? 在Ruby on Rails中,我们可以为连接表建立一个模型,例如: Item.rb (model) :has_many => :buyers, :through=>:invoice … Buyers.rb (model) :has_many => :items, :through=>:invoice … Invoice.rb (model) :belongs_to :item :belongs_to :buyer …. 然后我们可以使用: Item.first.buyers , Buyers.first.items和Buyer.create(:items=>Item.create(:name=>’random’))等,就像我们使用自动连接表而没有模型一样(使用has_and_belongs_to_many)。 在Visual Studio 2010的“添加关联”对话框中,如果我们选择多重性为*(多个),则无法选择连接表(带有模型)。 有没有办法手动完成?

Rails,如何将范围与它们之间的“和”运算符链接起来?

我的范围看起来像这样: scope :attr_similar_to, -> (attr, strings) { where(“#{attr} similar to ?”, “%(#{strings})%”) } 我使用这个范围的方法是遍历许多属性,对于每个属性,我将属性与“strings”变量中的一组多个字符串一起发送到范围中,并将其作为“foo | bar”发送到此范围。 |等等”。 因此,对于每个属性,我检查属性值是否与任何字符串相似。 我使用此范围的循环如下所示: results = Model.none attributes.each do |attr| results += attr_similar_to(attr, strings) end 问题是,如果我有两个属性,“name”和“age”,并且只有“name”匹配“foo”,它仍然会获取所有与“foo”匹配的记录。 我希望能够将这些范围调用与它们之间的“和”运算符链接起来,以便例如“name”和“age”都必须匹配每个才能获取任何记录。 我可能试图以错误或低效的方式做到这一点吗?

DataMapper因关系而无法删除记录

我有许多使用Torrent和Tag的DataMapper / MySQL设置,如下所示: class Torrent include DataMapper::Resource property :id, Serial property :name, String property :magnet, Text property :created_at, DateTime has n, :tags, :through => Resource end class Tag include DataMapper::Resource property :id, Serial property :name, String property :hits, Integer has n, :torrents, :through => Resource end 但是,当试图通过Torrent.first.destroy或类似的东西来破坏一个torrent时,DataMapper会返回false 。 我尝试了直接的SQL查询,例如delete from torrents where name like ‘%ubuntu%’ […]

has_many关系的动态class_name

我正在尝试与动态class_name属性建立has_many关系 class Category ( lambda { return self.item_type } ) end 要么 class Category self.item_type end 但我得到了错误: can’t convert Proc into String 要么 undefined method `item_type’ for # 编辑我有两种不同类型的广告 LeaseAd , RentAd使用单表inheritance实现 然后我有广告Category作为嵌套集。 我想指定哪种类型的广告属于Category对象。 感谢您的任何帮助!

Ruby on Rails – 设置评论function

我正在尝试在我的Ruby on Rails应用程序上设置一个function,让用户可以查看图片。 我已经按照本指南作为参考。 http://ruby.about.com/od/rubyonrails/ss/blogpart4_4.htm 根据我在其他Ruby on Rails项目上的经验,我认为Posts / Comments关系模型可以用于图片/评论关系。 我首先生成了一个脚手架。 rails g scaffold review name:string body:text picture:references 我希望每个图片页面都有一个单独的页面用于自己的评论。 由于我的评论控制器不需要索引页面,因此我从routes.rb文件中删除了该行 resources: reviews 我通过创建路线替换了它 match ‘https://stackoverflow.com/pictures/:id/reviews’, to: ‘reviews#show’, via: ‘get’ match ‘https://stackoverflow.com/pictures/:id/reviews/edit’, to: ‘reviews#edit’, via: ‘get’ match ‘https://stackoverflow.com/pictures/:id/reviews/new’, to: ‘reviews#new’, via: ‘get’ 在这里,我的路径涉及在图片中嵌套评论。 路线 favorite_picture_path PUT https://stackoverflow.com/pictures/:id/favorite(.:format) pictures#favorite pictures_path GET https://stackoverflow.com/pictures(.:format) pictures#index POST https://stackoverflow.com/pictures(.:format) pictures#create new_picture_path […]

有没有使用游标或智能提取的Ruby ORM?

我正在寻找一个Ruby ORM来取代ActiveRecord。 我一直在看Sequel和DataMapper。 它们看起来很不错,但它们似乎都不是基本的:当你不需要时,不要将所有内容都加载到内存中。 我的意思是我在ActiveRecord和Sequel上尝试了以下(或等效的)有很多行的表: posts.each { |p| puts p } 他们俩都记忆犹新。 它们似乎将所有内容加载到内存中,而不是在需要时获取内容。 我在ActiveRecord中使用了find_in_batches ,但这不是一个可接受的解决方案: ActiveRecord不是一个可接受的解决方案,因为我们遇到了太多问题。 为什么我的代码应该知道分页机制? 我很高兴配置页面大小的某个地方,但就是这样。 使用find_in_batches您需要执行以下操作: post.find_in_batches {| batch | batch.each {| p | 把p}} 但那应该是透明的。 那么有一个可靠的Ruby ORM可以正确获取吗? 更新: 正如Sergio所提到的,在Rails 3中你可以使用find_each ,这正是我想要的。 但是,由于ActiveRecord不是一个选项,除非有人能说服我使用它,所以问题是: 哪些ORM支持相当于find_each? 怎么做? 为什么我们需要一个find_each ,而find应该这样做,不应该吗?

在一个进程中使用什么ORM多个数据库连接sinatra应用程序?

检查ActiveRecord,DataMapper,续集:有些人使用全局变量(静态变量),有些需要在使用模型加载源文件之前打开数据库连接。 什么ORM更适合在使用不同数据库的sinatra应用程序中使用。

在Ruby / Rails中合并数组

如何合并两个数组? 像这样的东西: @movie = Movie.first() @options = Movie.order(“RANDOM()”).first(3).merge(@movie) 但它不起作用。 在@options我需要一个包含四个元素的数组,包括@movie 。