小编AKW*_*KWF的帖子

如何在Rails 3中将多个属性传递给find_or_create_by?

我想使用find_or_create_by,但是这个语句不起作用.它不与其他属性"查找"或"创建".

productproperty = ProductProperty.find_or_create_by_product_id(:product_id => product.id, :property_id => property.id, :value => d[descname])
Run Code Online (Sandbox Code Playgroud)

似乎很少或没有关于在Rails 3中使用动态查找器的信息."和" - 这些一起给了我一个未知的方法错误.

更新:

最初我无法让以下工作.请假设我不是白痴,"产品"是产品AR模型的一个实例.

product.product_properties.find_or_create_by_property_id_and_value(:property_id => 1, :value => "X")
Run Code Online (Sandbox Code Playgroud)

错误方法是:

no such keys: property_id, value
Run Code Online (Sandbox Code Playgroud)

我无法理解这一点.只有今天早上我找到了传递这样的值的引用:

product.product_properties.find_or_create_by_property_id_and_value(1, "X")
Run Code Online (Sandbox Code Playgroud)

瞧,它运作正常.我原本希望哈希在相同的情况下工作,但我猜不是.

如果你错过互联网上的某些内容,我想你会得到一次投票?

ruby-on-rails ruby-on-rails-3

42
推荐指数
5
解决办法
4万
查看次数

是否可以进行交互式Rake任务?

我想运行一个Rake任务,要求用户输入.

我知道我可以在命令行上提供输入,但是我想询问用户是否确定他们想要继续执行特定操作,以防他们错误输入提供给Rake任务的其中一个值.

rake

41
推荐指数
3
解决办法
1万
查看次数

如何在控制台中测试CanCan?

我需要检查:读?在控制台中的对象上,我该怎么做?

cancan ruby-on-rails-3

37
推荐指数
1
解决办法
4967
查看次数

在Rails 3应用程序中何处/如何编写常量

可能重复:
Ruby on Rails:在哪里定义全局常量?

我有兴趣在新应用程序上执行"Rails Way".我还想在某种上下文中引用常量来使代码更具可读性.我有一个应用程序,用户可以请求访问其他用户的数据集.此AccessRequest可以具有以下状态之一:

查看拒绝批准

我可以看到这些值将来用于报告功能,所以我想让它们成为常量,以避免任何拼写或大写问题.我以为我会把它们放在config/initializers目录下的constants.rb文件中.

我想将这些称为AccessRequest :: REVIEW.因为我已经有一个名为AccessRequest的模型,将它们放在那里是否有意义?或者将它们包装在config/initializers目录中的constants.rb文件中的类中?Rails方式是哪种方式?

ruby-on-rails constants

34
推荐指数
2
解决办法
2万
查看次数

是否可以在Rails 3.2应用程序中包含Git中的vendor/cache内容?

我经常需要在我的应用程序中创建分支以进行新的开发.这通常意味着我对我的分支中的Gemfile进行了更改,这些更改在Master中不存在,因此我最终得出了vendor/cache中缓存的gem的差异.

我发现让我感到烦恼的是我正在提交缓存的宝石,但我不知道它是否确实是错误的.我应该是.gitignore这些?如果是这样,我应该git rm缓存的gem文件吗?

ruby git rubygems ruby-on-rails-3 ruby-on-rails-3.2

29
推荐指数
1
解决办法
5114
查看次数

如何从Rails控制台执行模块中的方法?

我在一个文件中有一个模块,my_mod.rb声明如下所示:

module Reports
  module MyMod

    def mymethod
      ...
    end

  end
end
Run Code Online (Sandbox Code Playgroud)

我只是想跑mymethod.它显然不是一个类方法,所以我不能运行它:

Reports::MyMod.mymethod
Run Code Online (Sandbox Code Playgroud)

然而我希望有一些方法可以让解析器评估该方法,而无需经过一堆module_eval和module_function的东西.它应该比那更容易,不应该吗?

module ruby-on-rails

23
推荐指数
1
解决办法
1万
查看次数

如何在Rails 3应用程序中将gem添加到我的vendor/cache目录?

我使用EngineYard,我的部署失败了.我收到这条消息:

Some gems seem to be missing from your vendor/cache directory.
Could not find rspec-core-2.6.0.rc2 in any of the sources
Run Code Online (Sandbox Code Playgroud)

如何确保这些宝石进入该目录?

bundler ruby-on-rails-3

17
推荐指数
2
解决办法
2万
查看次数

MySQL用户创建数据库需要什么权限?

除root之外的用户是否可以创建数据库?

 GRANT SELECT, CREATE ON *.* TO 'myguy'@'thatmachine' IDENTIFIED BY PASSWORD '*12057DFA2BFBD8760D4788735B1C3E26889D7ECE' |
 GRANT ALL PRIVILEGES ON `db1`.* TO 'myguy'@'thatmachine'
 GRANT ALL PRIVILEGES ON `db2`.* TO 'myguy'@'thatmachine'
Run Code Online (Sandbox Code Playgroud)

我想知道这里缺少什么特权?另外,为什么第一行有一个密码呢?

UPDATE

让我进一步澄清我的问题是什么.我有两个数据库机器,源和目标.源计算机上有许多客户数据库.我需要将这些源数据库移动到另一台目标机器.

数据库采用mysqldump'ed .sql文件的形式,这些文件是从源到目标的sftp.然后,目标用户(而不是root)必须从每个.sql文件本地重新创建数据库,执行某些操作,然后删除数据库.

我找不到一种方法来为目标用户提供这些权限而不给予他全局权限*.*,这有效地使该用户像root一样危险.

mysql

17
推荐指数
1
解决办法
3万
查看次数

有没有办法在TextMate中注释掉一大块代码?

我没有在Ruby包中看到任何可以帮助我为大块代码添加注释的东西.我在网上找到这样的快捷方式的链接似乎不再有效.

ruby textmate keyboard-shortcuts

15
推荐指数
1
解决办法
7593
查看次数

为什么我的Capybara/Poltergeist测试不能从jQuery自动完成字段中选择?


更新:经过我自己的大量艰苦工作,我已经解决了这个问题.我很高兴成为任何需要帮助的人的资源.这是我工作设置的要点.


我已经尝试了我能找到Google和SO的所有解决方案.以下是我尝试过的一些不同的事情:

page.execute_script %Q{$('#{selector}').val('#{value}').trigger('keydown')}
Run Code Online (Sandbox Code Playgroud)

fill_in field, with: options[:with]
page.execute_script %Q{ $('##{field}').trigger('focus') }
page.execute_script %Q{ $('##{field}').trigger('keydown') }
Run Code Online (Sandbox Code Playgroud)

这是失败的:

page.should have_selector('ul.ui-autocomplete li.ui-menu-item a')
Run Code Online (Sandbox Code Playgroud)

但是当我在Firebug中查看并在浏览器中测试它时,它肯定存在.

以下是所有细节,包括上述内容的重述.请记住,自动填充字段在浏览器中正常工作.

listing_integration_spec.rb

require "spec_helper"

describe "Listing Integration" do

  let!(:user) { login_user }

  it "lets a user add information listing", js: true do
    listing = create(:listing, user: user)
    click_link('Additional Information')
    click_link('Create')
    fill_autocomplete('listings_search', with: listing.item_id)
  end

end
Run Code Online (Sandbox Code Playgroud)

spec/support/feature_helper.rb

def fill_autocomplete(field, options = {})
  fill_in field, with: options[:with]
  page.execute_script %Q{ $('##{field}').trigger('focus') }
  page.execute_script %Q{ $('##{field}').trigger('keydown') }
  selector …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails jquery-autocomplete capybara poltergeist

15
推荐指数
2
解决办法
6436
查看次数