Questions tagged «ruby-on-rails-3»

Ruby on Rails是一个用Ruby编写的开源Web开发框架。Ruby on Rails遵循约定胜于配置的原则,使您不必重新进行发明以保持生产力。仅将此标记用于Rails 3特定问题,并标记这些问题[ruby-on-rails]。

5
已存在的Rails自动分配ID
我像这样创建新记录: truck = Truck.create(:name=>name, :user_id=>2) 我的数据库目前有数千个用于卡车的实体,但是我以一些可用的方式将ID分配给了其中的几个。因此,发生的事情是rails创建id = 150的项目,并且工作正常。但是随后它尝试创建一个项目并将其分配为id = 151,但是该id可能已经存在,因此我看到此错误: ActiveRecord::RecordNotUnique (PG::Error: ERROR: duplicate key value violates unique constraint "companies_pkey" DETAIL: Key (id)=(151) already exists. 下次我执行该操作时,它将仅分配ID 152,如果尚未使用该值,它将正常工作。如何在分配ID之前让Rails检查ID是否已经存在? 谢谢! 编辑 卡车ID是要复制的内容。用户已经存在,并且在这种情况下为常数。实际上,这是我必须处理的遗留问题。一种选择是在此时让轨道自动分配每个id的位置重新创建表。我开始认为这可能是最好的选择,因为我还有其他一些问题,但是这样做的迁移将非常复杂,因为Truck是许多其他表中的外键。有没有一种简单的方法可以让Rails使用已经在Truck下存储的相同数据,使用自动分配的ID并维护所有现有关系来创建新表?

22
PG无法定义的错误关系用户不存在
我之前看到过这个问题,但仅适用于rspec。我还没有创建测试,因为它对我来说太先进了,但是很快我就会!:P 当我尝试注册/登录我的应用程序时出现此错误。我使用devise创建用户,还使用omn​​iauth2使用google登录。 这是错误 ActiveRecord::StatementInvalid at /users/auth/google_oauth2/callback PG::UndefinedTable: ERROR: relation "users" does not exist LINE 5: WHERE a.attrelid = '"users"'::regclass ^ : SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"users"'::regclass AND …


7
删除所有已安装的宝石并重新开始
我最近开始学习Ruby和Ruby on Rails,并观看了许多入门材料。我最近发现,在无法安装gem或将其安装但由于某种原因而无法使用的地方时,我不断收到错误消息,因此我决定只安装Ruby,然后再次删除所有内容并从安装开始。一部培训视频让我用RVM安装了我的大部分宝石,所以我不知道这是否会改变任何东西。 简而言之,我的问题是“如何摆脱RVM,Rubygems和所有已安装的Gems,以便仅使用Ruby可以重新开始?” 编辑:我在Mac OS 10.6上

7
检查Rails中的控制器是否存在记录
用户可以在我的应用中创建业务。当他们触发index我的操作时,我BusinessesController要检查某个业务是否与current_user.id: 如果是:显示业务。 如果否:重定向到new操作。 我试图用这个: if Business.where(:user_id => current_user.id) == nil # no business found end 但是即使业务不存在,它也总是返回true。 如何测试数据库中是否存在记录?

2
出现错误:部署到heroku时,必须至少安装一个postgresql-client- <version>软件包。
sdilshod@sdilshod-Lenovo-B590:~/webapp/saturn$ heroku run rake db:migrate Running `rake db:migrate` attached to terminal... up, run.6194 DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* …

2
如何使用Ruby on Rails 3创建和使用模块?
我正在使用Ruby on Rails 3,并且想在模块中移动一些自定义和共享的代码。 我应该使用什么语法来编写模块代码? 我必须将模块文件放在应用程序的哪个文件夹中? 如何在一个或多个控制器类中包含该模块? 我还必须在应用程序中的任何位置使用自定义模块采取什么其他措施? 如何从我的应用程序调用模块中的方法? 提前致谢。


2
Rails路由可在单个应用程序上处理多个域
尽管这里和其他地方有几个类似的问题,但我一直无法找到可行的解决方案。对于Rails 3,似乎没有回答这个问题,所以可以这样: 我有一个当前允许用户创建包含其应用程序实例的子域的应用程序。在Rails 2中,最好使用subdomain-fu gem来提供服务,而在Railscast中,根据Railscast- http: //railscasts.com/episodes/221-subdomains-in-rails-3而言,它要简单得多。 那是好东西,但我也想为用户提供将自己的域名与他们的帐户关联的选项。因此,尽管他们可能拥有http://userx.mydomain.com,但我希望他们也选择关联http://userx.com。 我在Rails 2中找到了一些这样做的参考,但是这些技术似乎不再起作用了(特别是这一技术:https : //feefighters.com/blog/hosting-multiple-domains-from-a-single-rails -app /)。 谁能推荐一种使用路由的方法来接受任意域并将其传递给控制器​​,以便我可以显示适当的内容? 更新:由于Leonid的及时响应以及对代码的重新审视,我现在已经得到了大部分答案。最终,它需要对我正在使用的现有子域代码(来自Railscast解决方案)进行添加,然后在route.rb中添加一些内容。我还没到那儿,但我想发布到目前为止的内容。 在lib / subdomain.rb中: class Subdomain def self.matches?(request) request.subdomain.present? &amp;&amp; request.subdomain != "www" end end class Domain def self.matches?(request) request.domain.present? &amp;&amp; request.domain != "mydomain.com" end end 我添加了第二堂课,以模仿第一堂课,这是众所周知的工作方式。我只需添加一个条件,以确保传入域不是我托管主站点的域。 此类在routes.rb中使用: require 'subdomain' constraints(Domain) do match '/' =&gt; …


5
使用Rails的form_for但在<form>元素上设置自定义类,属性?
form_for似乎忽略了任何“额外”属性,例如data-foo属性或在其第二个参数中class传递的属性options。 = form_for @user, {:url =&gt; 'foo', :class =&gt; 'x', 'data-bar' =&gt; 'baz' } do |f| # ... 输出是&lt;form&gt;没有x类或data-bar属性的标签。 解决办法是什么? 或者,如何在FormBuilder不使用实例的情况下获取实例form_for?


8
由于readline错误导致无法执行“ rails console”
rails console由于此错误,我无法执行: localhost:TwitterForZombies wiz$ rails c /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `require': dlopen(/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib (LoadError) Referenced from: /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle Reason: image not found - /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `&lt;top (required)&gt;' from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `require' from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `&lt;top (required)&gt;' from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `require' from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `&lt;top (required)&gt;' from script/rails:6:in `require' from script/rails:6:in `&lt;main&gt;' 我已经通过自制软件安装了readline。我想继续使用rbenv而不是rvm。 感谢您阅读我的问题。

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 或者,是否可以传递仅包含要包含的属性的数组?


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.