草庐IT

activerecord-relation

全部标签

ruby-on-rails - ActiveRecord 访问器点 (.) 与方括号 ([])

使用ActiveRecord,我们可以访问像这样的值方法访问user=User.find(1)user.name#=>'John'或哈希访问user[:name]#=>'John'我只是想知道什么时候使用哪个,或者有什么最佳实践吗?我个人更喜欢methodaccess因为我觉得这更像是ruby​​方式。然而,当我看到别人的代码时,我面临着哈希访问。 最佳答案 Rails惯例是使用ActiveRecord::AttributeMethods::Read#read_attribute(点符号),而不是它的别名ActiveRecord::

ruby-on-rails - ActiveRecord::Base 的未定义方法#sanitize

我刚刚升级到Rails5.1.1并收到此错误。NoMethodError(undefinedmethod`sanitize'forActiveRecord::Base:Class):栈回溯到这段代码like_search_term=ActiveRecord::Base::sanitize("%#{escaped_search_term}%")在新的Rails升级中是否删除或更改了此方法? 最佳答案 是的,的确,它看起来是removed.SanitizewasneverpartofthepublicAPIoftheframework.

ruby - NameError:未初始化的常量 ActiveRecord::Migrator::Zlib

我是Ruby和ActiveRecord的新手。我正在尝试使用以下命令运行我的第一次迁移:rakedb:migrate我一直收到这个错误:NameError:uninitializedconstantActiveRecord::Migrator::Zlib.我尝试过不同的项目,所有迁移都出现此错误。 最佳答案 我不知道这是怎么回事,花了我一整天的时间来寻找解决方案在你的environment.rb的顶部require'zlib'这对我有用:) 关于ruby-NameError:未初始化的常

ruby-on-rails - 使用 .destroy() 返回值检查 ActiveRecord 对象是否被销毁

我正在维护某人的代码库,他们有这样的东西:if@widget_part.destroyflash[:message]="Errordeletingwidgetpart"elseflash[:message]="Widgetpartdestroyedsuccessfully"enddestroy返回什么?这样测试可以吗?我问的原因是我尝试使用flash[:message]="Errordeletingwidgetpart:#{@widget_part.errors.inspect}"而且没有错误消息,所以我很困惑。它给出了类似的东西#,@messages={}>

ruby-on-rails - 未初始化的常量 ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES (NameError)

我在运行Rails服务器时遇到问题。我在初始化程序中设置了abstract_mysql2_adapters,包括:classActiveRecord::ConnectionAdapters::Mysql2AdapterNATIVE_DATABASE_TYPES[:primary_key]="int(11)auto_incrementPRIMARYKEY"end它解决了我的rakedb:migrate问题,但是当我尝试运行我的Rails服务器时,它给了我这个错误。C:/Users/XXXX/Documents/RoRCmS/simple_cms/config/initializers/a

ruby-on-rails - 在 has_many :through relationship, 上覆盖 ActiveRecord << 运算符以接受连接模型的数据

我有三个类:Person、Position和Directory。APersonhas_many:directories,:through=>:position.目录有_many:people,:through=>:position.个人和目录都有_many:positions。除了具有id、person_id和directory_id之外,Position模型还有一个或多个附加字段(例如,title)。我希望能够在每次将人员添加到Directory.people集合时向连接模型添加数据,例如标题字段。通常的directory=Directory.last#Let'sassumethat

ruby-on-rails - 如何从 ActiveRecord CollectionProxy 获取值?

我在遍历集合属性以获取值时遇到问题。这是我的代理,#]>我希望能够像这样遍历代理中的所有对象。my_collection_proxy.eachdo|c|c.nameend但这似乎不起作用。如何获取代理中每个名称的值?输出:@order.products.eachdo|a|a.nameend=>[#,#]我希望我的输出看起来像什么:=>test=>aggg 最佳答案 如果你想把所有的名字放到一个数组中,你应该使用Enumerable#collect:names=@order.products.collect(&:name)

ruby-on-rails - 编写 ActiveRecord 适配器

我想自己写ActiveRecordadapter对于HBasedatabase因为目前不存在。但是,我已经在网上搜索了一段时间,但找不到关于如何编写ActiveRecord适配器的任何好的资源。您将如何着手执行此操作,或者您是否可以推荐任何链接? 最佳答案 我认为最简单的做法是gotothesource.railstrunk有适用于mysql、postgres和sqlite的适配器,您可以将其作为适配器的基础。abstract_adapter.rb非常简短,实现起来相当直接。 关于rub

ruby-on-rails - ruby rails : Confirmation Page for ActiveRecord Object Creation

使用RubyonRails在创建ActiveRecord对象之前我需要一个确认页面。用户将在提交之前看到他们正在创建的项目的预览以及保存在数据库中的对象一个常见的模式;用户访问/entry/new用户输入详细信息并点击提交用户被重定向到/entry/confirm,其中显示条目并单击提交或编辑以更正错误对象被保存你会如何实现它? 最佳答案 解决此问题的另一种方法是将虚拟确认属性添加到您的模型中。这样,就无需为此创建单独的操作:classMyRecord:createend现在,您的新对象将无法正确保存,因为确认字段的验证将失败。您可

ruby-on-rails - ActiveRecord has_many 其中表 A 中的两列是表 B 中的主键

我有一个模型,Couple,它有两列,first_person_id和second_person_id和另一个模型,Person,其主键是person_id并且具有列name这是我想要的用法:#including'Person'modelforeagerloading,thisiscrucialformec=Couple.find(:all,:include=>:persons)[0]puts"#{c.first_person.name}and#{c.second_person.name}"那我该怎么做呢? 最佳答案 在Couple