标签: rails-console

访问 HABTM 连接表记录

我的应用程序中有一个 HABTM 关系,如下所示:

class Book < ActiveRecord::Base
  has_and_belongs_to_many :authors
end

class Author < ActiveRecord::Base
  has_and_belongs_to_many :books
end
Run Code Online (Sandbox Code Playgroud)

在 Rails 控制台中,我可以像这样访问 Book 和 Author 的记录:

Book.all
Book.first
b = Book.first
b.title = "Title2"
b.save
...
Run Code Online (Sandbox Code Playgroud)

但我不知道如何访问连接表。

如何访问和查看连接表中的记录books_authors

是否可以更改连接表行?

many-to-many join ruby-on-rails rails-console ruby-on-rails-4

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

Rails 控制台,如何查看对象属性

当我这样做时在 Rails 控制台中

u = User.where(id: 1)

"he find the user with id = 1, but then"

u.email
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

NoMethodError: undefined method `email' for #<User::ActiveRecord
Run Code Online (Sandbox Code Playgroud)

为什么 rails 控制台总是在寻找方法而不是属性?如何查看特定属性?

我这样做是因为我在应用程序中有一个方法可以通过 user_id 查找协调器,就像这样

user_id = current_user.id
coordinator = Coordinator.where(user_id: user_id)
course_id = coordinator.course_id
Run Code Online (Sandbox Code Playgroud)

我收到这个错误 导轨错误

ruby ruby-on-rails rails-console ruby-on-rails-5

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

Rails 生产控制台无法检索 AWS Elastic Beanstalk Amazon Linux 2 上的环境变量

我一直在尝试访问 ec2 实例上的生产控制台,作为弹性 beanstalk 环境的一部分。我能够实际访问控制台,但是当我查询一个对象时,例如。“Wager.all”,它给了我这个错误:

[root@ip-10-0-1-146 config]# bundle execrails c -e production 加载生产环境 (Rails 5.2.4.2) irb(main):001:0> Wager.all Traceback (最近一次调用最后) : PG::ConnectionBad (fe_sendauth:未提供密码)

这是我的 database.yml 文件(需要查看生产配置):

default: &default
  adapter: postgresql
  encoding: UTF-8
  host: 'localhost'
  
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 10 } %>

test:
  <<: *default

development:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>
  database: <%= ENV['RDS_DB_NAME'] %>
  username: <%= ENV['RDS_USERNAME'] %>
  password: <%= ENV['RDS_PASSWORD'] %>
  host: <%= ENV['RDS_HOSTNAME'] %>
  port: <%= ENV['RDS_PORT'] %>

production:
  <<: *default
  url: <%= ENV['DATABASE_URL'] %>
  database: <%= ENV['RDS_DB_NAME'] …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails environment-variables amazon-web-services rails-console amazon-elastic-beanstalk

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

如何在撬内对awesome_print结果进行分页

我正在使用awesome_printgem来显示输出pry,看起来很漂亮。由于 awesome_print使用换行符,长输出ap html.chapters.order("position ASC") 仅显示输出的末尾部分,因此如何将结果分页显示为输出less或输出more

谢谢。

ruby-on-rails rails-console pry

0
推荐指数
1
解决办法
464
查看次数

Rubygems不会加载到IRB或Rails控制台中

在OSX上使用RVM,我正在尝试使用ruby gems.但是,一个

require 'rubygems'
Run Code Online (Sandbox Code Playgroud)

在IRB和Rails控制台中返回false.在这里经历类似的问题,我认为这可能与Gem路径与Gem env有关.

MAC-AC028761:Ruby ac028761$ irb
1.9.3-p429 :001 > require 'rubygems'
 => false
1.9.3-p429 :002 > Gem.path
 => ["/Users/ac028761/.rvm/gems/ruby-1.9.3-p429", "/Users/ac028761/.rvm/gems/ruby-1.9.3-p429@global"]
1.9.3-p429 :003 > exit
MAC-AC028761:Ruby ac028761$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.25
  - RUBY VERSION: 1.9.3 (2013-05-15 patchlevel 429) [x86_64-darwin12.3.0]
  - INSTALLATION DIRECTORY: /Users/ac028761/.rvm/gems/ruby-1.9.3-p429
  - RUBY EXECUTABLE: /Users/ac028761/.rvm/rubies/ruby-1.9.3-p429/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/ac028761/.rvm/gems/ruby-1.9.3-p429/bin
  - RUBYGEMS PLATFORMS:
        - ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /Users/ac028761/.rvm/gems/ruby-1.9.3-p429
     - /Users/ac028761/.rvm/gems/ruby-1.9.3-p429@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems irb rails-console rvm

0
推荐指数
1
解决办法
2059
查看次数

使用'n'退出rails控制台

我注意到一件奇怪的事.我不小心输入了:

@a = n
Run Code Online (Sandbox Code Playgroud)

这导致了rails控制台的退出.

在进一步的实验中,我发现即使我只是(在控制台中)

n
Run Code Online (Sandbox Code Playgroud)

控制台退出.如果我尝试任何其他角色,我会得到预期的错误.

a
# => NameError: undefined local variable or method `a' for main:Object
Run Code Online (Sandbox Code Playgroud)

我无法找到任何陈述n用于退出的文件rails console.这是正常的吗?或者我的控制台破坏了一些我根本不懂的东西?

版本:

ruby 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux]
Rails 3.2.13
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-console

0
推荐指数
1
解决办法
364
查看次数

从 Rails 控制台执行 ruby​​ 脚本

Rails 3.2
Run Code Online (Sandbox Code Playgroud)

我有一个正在运行的 Rails 应用程序,带有 Company MVC。

在 models/company.rb 中,我有以下方法:

def save_company_pay_num
  return false unless self.valid?
  create_company_pay_num if self.company_pay_num.blank?
  res = save_check_company_pay_num
  unless res[0]
    errors.add(:set_company_pay_num, res[1].try{|r| r.split(':')[1].strip.capitalize})
    return false
  end
  true
end 
Run Code Online (Sandbox Code Playgroud)

我有大约 1,000 家公司需要重新发放工资号码。

有没有办法从 Rails 控制台(rails c)执行文件,例如:

reset_pay_num.rb

company_ids=[
  '1',
  '2',
  '3',
  ...
]

company_ids.each do |c|
  company = Company.find(c)
  company.save_company_pay_num
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-console

0
推荐指数
1
解决办法
2948
查看次数

如何在删除关联时保存活动记录对象?

我有一个名为Company的模型以及许多协会,它是一个拥有更多的协会.(具有依赖性破坏)

com = Company.find_by(name: 'ABC')
Run Code Online (Sandbox Code Playgroud)

然后我通过破坏入口

Company.find_by(name: 'ABC').destroy
Run Code Online (Sandbox Code Playgroud)

现在' com'有记录,当我执行com.save该对象时,它不会与其关联一起存储.

注意 我正在尝试调试我的销毁查询占用时间(它有数百个关联),所以我不想丢失数据,我想在调试后将其保存在控制台中.

ruby activerecord ruby-on-rails rails-console

0
推荐指数
1
解决办法
71
查看次数

需要Factory Girl的Rails控制台失败

我知道FactoryGirl已被弃用而不赞成FactoryBot,但我们还没有更新我们的代码,因此我们仍在使用FactoryGirl.无论如何,在Rails控制台中要求FactoryGirl应该可以工作,但它不是'.

gem已正确包含在我的Gemfile中

group :test, :development do
   ...  
  gem 'factory_girl_rails', '~> 4.9.0'
   ...
end
Run Code Online (Sandbox Code Playgroud)

我跑的时候会出现 bundle

$ bundle | grep factory
Using factory_girl 4.9.0
Using factory_girl_rails 4.9.0
Run Code Online (Sandbox Code Playgroud)

但是当我在控制台中需要它时,它会失败.

[1] pry(main)> require 'factory_girl_rails'
=> false
[3] pry(main)> require 'factory_girl'
=> false
Run Code Online (Sandbox Code Playgroud)

我的Gemfile中的任何其他宝石似乎都没有发生这种情况.谁能帮我解决这个问题?

ruby ruby-on-rails rails-console factory-bot

-1
推荐指数
1
解决办法
206
查看次数