Questions tagged «ruby-on-rails»

Ruby on Rails是一个用Ruby编写的开源全栈Web应用程序框架。它遵循流行的MVC框架模型,并以其“配置之上的约定”方法进行应用程序开发而闻名。


15
缺少链接的主机!请提供:host参数或设置default_url_options [:host]
我已经搜索了大约90分钟,但仍然没有答案。我在哪里设置default_url_options?我已经将其设置为config.action_mailer.default_url_options解决其他地方的相同错误,但是现在尝试在RSpec规范中使用URL辅助程序时遇到此错误。我不知道在哪里设置default_url_options。 Failure/Error: listing_url(listing).should match(/\/\d+-\w+$/) RuntimeError: Missing host to link to! Please provide :host parameter or set default_url_options[:host] # ./spec/routing/listing_routing_spec.rb:9:in `block (3 levels) in <top (required)>' 此代码与emails / ActionMailer无关,只是需要一个URL而不是路径。 有任何想法吗?


2
是否有有关Rails列类型的文档?
除了在此页面上找到的简单类型列表之外,我还在寻找更多的东西: :primary_key,:string,:text,:integer,:float,:decimal,:datetime,:timestamp,:time,:date,:binary,:boolean 但是是否有任何实际定义的文档这些字段? 特别: :string和之间有什么区别:text? 介于:float和之间:decimal? 什么是显着特征:time,:timestamp和:datetime? 这些类型的细微差别是否记录在任何地方? 编辑:DB平台实现的要点与我要问的问题无关。 如果说:datetime在Rails文档中没有定义的预期含义,那么在选择相应的列类型时db-adapter-writers将经历什么?


14
如何测试Rails中是否存在参数
我在Ruby on Rails中使用IF语句来尝试测试是否设置了请求参数。无论是否同时设置了两个参数,如果触发了块,则下面的第一部分。如果同时设置了params [:one]和params [:two],如何才能使该部分被触发? if (defined? params[:one]) && (defined? params[:two]) ... do something ... elsif (defined? params[:one]) ... do something ... end


6
Heroku / devise-找不到要链接的主机!请提供:host参数或设置default_url_options [:host]
我正在尝试将我的应用程序推送到heroku。我仍然在开发中。我将设计与可确认模块一起使用。 当我尝试使用heroku控制台添加用户时,出现此错误: Missing host to link to! Please provide :host parameter or set default_url_options[:host] 在测试和开发环境中,我有以下内容: 环境/development.rb和环境/test.rb config.action_mailer.default_url_options = { :host => 'localhost:3000' } 我没有在生产环境中设置任何东西。 我试图推动 config.action_mailer.default_url_options = { :host => 'mywebsitename.com' } config.action_mailer.default_url_options = { :host => 'heroku.mywebsitename.com' } 但这也行不通.. 我在网上看到它可能与ActionMailer有关,但是我不知道必须配置什么。非常感谢您的想法! 编辑: 你好 为了避免在我按下heroku时我的应用程序崩溃,我将其放在env / test.rb和env / dev.rb中(不是在env.rb中,我认为这是因为它是Rails 3应用程序) config.action_mailer.default_url_options …

8
想要在Rails中查找没有关联记录的记录
考虑一个简单的关联... class Person has_many :friends end class Friend belongs_to :person end 在Arel和/或meta_where中,让所有没有朋友的人最干净的方法是什么? 然后has_many:through版本呢? class Person has_many :contacts has_many :friends, :through => :contacts, :uniq => true end class Friend has_many :contacts has_many :people, :through => :contacts, :uniq => true end class Contact belongs_to :friend belongs_to :person end 我真的不想使用counter_cache-从我阅读的内容来看,它不适用于has_many:through 我不想拉所有的person.friends记录并在Ruby中遍历它们-我想要一个可以与meta_search gem一起使用的查询/范围 我不在乎查询的性能成本 …

3
Rails 3验证多个属性的唯一性
我使用Rails 3.0.0.beta4 我想在两个属性上添加关于唯一性的验证,这意味着如果'recorded_at'和'zipcode'唯一,则我的模型有效。 在一个属性上是语法 validates :zipcode, :uniqueness => true 谢谢


3
使用user:references与user_id:integer生成模型
我对如何生成属于另一个模型的模型感到困惑。我的书使用以下语法将Micropost与用户相关联: rails generate model Micropost user_id:integer 但http://guides.rubyonrails.org/表示要这样做: rails generate model Micropost user:references 这两个生成的迁移是不同的。另外,对于前者,rails如何知道这user_id是外键引用user?谢谢!

18
处理Rail中STI子类的路线的最佳实践
我的Rails视图和控制器上到处是redirect_to,link_to和form_for方法调用。有时link_to,redirect_to并且在链接的路径中是显式的(例如link_to 'New Person', new_person_path),但是很多时候路径是隐式的(例如link_to 'Show', person)。 我在模型中添加了一些单表继承(STI)(例如Employee < Person),所有这些方法都破坏了子类的实例(例如Employee);当rails执行时link_to @person,它会出错undefined method employee_path' for #<#<Class:0x000001022bcd40>:0x0000010226d038>。Rails正在寻找由对象的类名(即员工)定义的路线。这些员工路线未定义,也没有员工控制者,因此也未定义操作。 之前已经问过这个问题: 在StackOverflow上,答案是编辑整个代码库中的每个link_to等实例,并明确声明路径 再次在StackOverflow上,两个人建议使用routes.rb来将子类资源映射到父类(map.resources :employees, :controller => 'people')。在同一SO问题中的最高答案建议使用以下方法对代码库中的每个实例对象进行类型转换.becomes 在StackOverflow上,另一个答案是,“做自己重复做”阵营中的方法,并建议为每个子类创建重复的脚手架。 在SO中,这又是同样的问题,其中最高答案似乎是错误的(Rails magic Just Works!) 在网络上的其他地方,我发现了此博客文章,F2Andy建议在代码中的所有路径中进行编辑。 在博客文章Logical Reality Design上的Single Table Inheritance和RESTful Routes上,建议将子类的资源映射到超类控制器,如上面的SO答案2所示。 Alex Reisner在Rails中发表了“单表继承”一文,他主张不要将子类的资源映射到父类中routes.rb,因为这只会从link_to和redirect_to而不是从中捕获路由中断form_for。因此,他建议改为在父类中添加一个方法,以使子类位于其类周围。听起来不错,但是他的方法给了我错误undefined local variable or method `child' for #。 所以这似乎是最优雅,拥有最共识(但不是所有的答案是优雅的,也不是太大的共识),是资源添加到您的routes.rb。除非这不适用于form_for。我需要澄清!为了提炼以上选择,我的选择是 将子类的资源映射到超类的控制器中routes.rb(并希望我不需要在任何子类上调用form_for) 重写rails内部方法以使类相互说谎 在代码中编辑每个实例,以隐式或显式调用对象操作的路径,从而更改路径或类型转换对象。 鉴于所有这些矛盾的答案,我需要裁决。在我看来,没有好的答案。这是滑轨设计的失败吗?如果是这样,它是否可以修复?如果不是这样,那么我希望有人可以让我直接理解这一点,带我逐步了解每种选择的优缺点(或解释为什么这不是一种选择),以及哪个是正确的答案以及为什么。还是我在网上找不到合适的答案?


8
合并两个ActiveRecord :: Relation对象
假设我有以下两个对象: first_name_relation = User.where(:first_name => 'Tobias') # ActiveRecord::Relation last_name_relation = User.where(:last_name => 'Fünke') # ActiveRecord::Relation 是否可以将两种关系结合在一起以产生一个ActiveRecord::Relation包含两个条件的对象? 注意:我知道我可以链接到哪里来获得这种行为,我真正感兴趣的是有两个单独的ActiveRecord::Relation对象的情况。

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.