小编Sso*_*esS的帖子

Rails 5:无法从参数中检索哈希值

我遇到了一个奇怪的问题.

undefined method `values' for #<ActionController::Parameters:0x007fb06f6b2728>
Run Code Online (Sandbox Code Playgroud)

是我得到的错误,当我将变量分配给param哈希,并尝试获取它的值.

attributes = params[:line_item][:line_item_attributes_attributes] || {}
attributes.values
Run Code Online (Sandbox Code Playgroud)

该参数看起来像哈希的散列:

{"0"=>{"product_attribute_id"=>"4"}, "1"=>{"product_attribute_id"=>"7"}}
Run Code Online (Sandbox Code Playgroud)

现在,当我在控制台中执行此操作并将其分配给变量属性时,它可以完美地工作.所以我很难理解这里没有的东西 - 以及如何让它发挥作用.

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

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

Rails 4设计:如何注销所有用户

我即将对我的应用程序执行更新,我想要注销所有记住会话的用户.我的意思是,一旦我部署更新,我想强制所有用户再次登录.

最好的方法是什么?

ruby-on-rails devise ruby-on-rails-4

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

Rails 5:ActionCable和db未同步

我能够成功设置ActionCable,收听频道,验证请求等等.但是,在创建后尝试连接到频道时,我遇到了一个奇怪的错误(很难解释,见下文)

我有一个设置,一个配置文件有一个墙,墙上有很多帖子.每个帖子都有自己的频道,墙本身也有自己的频道.在墙上创建帖子时,会通过ActionCable进行更新:

# Wall's Cable Channel
class WallsChannel < ApplicationCable::Channel
  def subscribed
    profile = Profile.find_by_id params[:id]

    if ability.can? :subscribe, profile
      stream_from "Wall(#{profile.id})"
    else
      reject
    end
  end
end

# Broadcasting to the wall
ActionCable.server.broadcast 'Wall(:id:)', { :data: }

# Client Side
GlobalCable.cable.subscriptions.create({channel: 'WallsChannel', id :id: }, {
    received: function(data) {
        // do stuff with a new post on a wall
    }
});
Run Code Online (Sandbox Code Playgroud)

我简化了它,但这可以按预期工作.创建新帖子时,墙上频道会被触发,客户端会收到帖子和所有商品.

问题是连接广播的新帖子.当我去听新帖子时,它无法从数据库中获取帖子:

# Posts Cable Channel
class PostsChannel < ApplicationCable::Channel
  def subscribed
    post = Post.find_by_id params[:id]

    if ability.can? :subscribe, …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-5 actioncable

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

使用ActiveAdmin处理多个管理类型登录

我有一个应用程序需要三个用户类型(用户,代理,管理员)登录并需要不同的设计模块.

                        User    AgentAdmin  AdminUser

confirmable              Yes        Yes         No
lockable                 Yes        Yes         No
timeoutable               No        Yes         Yes
Omniauthable             Yes        No          No
database_authenticatable Yes        Yes         Yes
recoverable              Yes        Yes         No
rememberable             Yes        Yes         No
trackable                Yes        Yes         Yes
validatable              Yes        Yes         Yes
Run Code Online (Sandbox Code Playgroud)

此外,这些用户可以根据其类型添加其他列.所以,我想根据类型创建不同的表.

根据我的要求,我决定来处理AgentAdmin,并AdminUserActiveAdmin有不同的命名空间(联系管理员AdminUser,代理AgentAdmin).我已经配置authentication_method,current_user_methodlogout_link_path为这两个命名空间,如下.

config.load_paths = [File.join(Rails.root,'app','admin'), File.join(Rails.root,'app','agent')]

config.namespace :admin do |admin|
  admin.authentication_method = :authenticate_admin_user!
  admin.current_user_method = :current_admin_user
  admin.logout_link_path = :destroy_admin_user_session_path
end

config.namespace :agent do |agent| …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise activeadmin

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

rails:受保护的方法`around_validation'调用#<StateMachine :: Machine:0xba3014ec>

我正在尝试实现state_machine gem,在我的rails项目中,我安装了gem,然后我将列"state"添加到我的account_entries模型:

  def change
    add_column :account_entries, :state, :string
  end
Run Code Online (Sandbox Code Playgroud)

然后在我的account_entries模型中,我添加了状态机初始方法,如下所示:

state_machine :state, :initial => :submitted do

end
Run Code Online (Sandbox Code Playgroud)

然后在我看来我显示时间输入状态:

account_entry.state
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从我的应用程序创建account_entry时,我收到此错误:

protected method `around_validation' called for #<StateMachine::Machine:0xba3014ec>
Run Code Online (Sandbox Code Playgroud)

它说它位于我的account_entries控制器的第4行,这是我的account_entries控制器的第4行.

e.account_entries.create(params.require(:account_entry).permit(:time, :account_id))
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?或者这是我的问题?我该如何解决?错误消息是什么意思?

ruby ruby-on-rails rails-activerecord

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

Meteor.js使用哪种架构模式?

我非常清楚MVC模式,但Meteor本身似乎没有像它那样的任何模式.

在开发Meteor应用程序时使用哪种架构模式?

architecture model-view-controller design-patterns meteor

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

Rails:.gitignore仍然跟踪我的database.yml文件

我在我的团队中有4个人,他们经常不得不改变数据库的套接字,因为它们有不同的路径,它变得烦人,我试图将database.yml添加到.gitignore:

/config/database.yml
Run Code Online (Sandbox Code Playgroud)

但是出于一些奇怪的原因,我编辑文件并使其git status仍然被跟踪!谁能告诉我我能做些什么?

git ruby-on-rails

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

coc.nvim:在新的终端选项卡中打开函数或类定义

大多数时候我使用该gd命令,然后我必须在新的终端选项卡中手动浏览文件,因为我仍然需要打开以前的文件。

能够在新选项卡中打开定义会有点有用,当然,我只是想知道这是否可能以及如何配置它,可能在 nvim 配置文件中映射一个新命令?

这就是我映射gd命令的方式:

nmap <silent> gd <Plug>(coc-definition)
Run Code Online (Sandbox Code Playgroud)

neovim coc.nvim

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

Heroku不会重置我的数据库

我一直试图从命令行运行$ heroku pg:reset但我相信我没有正确地放入数据库.我尝试了很多变化.

我跑了$ heroku config | grep POSTGRESQL获取打印为的数据库名称

HEROKU_POSTGRESQL_PINK_URL: postgres://naknaswvxfvuup:QK2dHYNMZ_va10lDgMDo4S0BIM@ec2-23-21-161-255.compute-1.amazonaws.com:5432/db7eute4gu4mcb
Run Code Online (Sandbox Code Playgroud)

我试过运行一切

#1

$ heroku pg:reset HEROKU_POSTGRESQL_PINK_URL: postgres://naknaswvxfvuup:QK2dHYNMZ_va10lDgMDo4S0BIM@ec2-23-21-161-255.compute-1.amazonaws.com:5432/db7eute4gu4mcb
Run Code Online (Sandbox Code Playgroud)

#2

$ heroku pg reset postgres://naknaswvxfvuup:QK2dHYNMZ_va10lDgMDo4S0BIM@ec2-23-21-161-255.compute-1.amazonaws.com:5432/db7eute4gu4mcb
Run Code Online (Sandbox Code Playgroud)

#3

$ heroku pg:reset db7eute4gu4mcb
Run Code Online (Sandbox Code Playgroud)

和其他变化.请让我知道如何正确记录这一点,因为我不断收到错误或来自命令行的此文本"! Unknown database: db7eute4gu4mcb. Valid options are: DATABASE_URL, HEROKU_POSTGRESQL_PINK_URL"

我目前在Ruby on Rails教程的10.4上.谢谢!

ruby database ruby-on-rails heroku

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

Ruby On Rails:ElasticSearch 身份验证(Tire 和 ElasticSearch-rails)

我在 Heroku 上部署了 Ruby On Rails 应用程序,我使用 ElasticSearch 插件,我的弹性搜索集群工作正常,但最近 ElasticSearch 插件要求所有集群强制执行身份验证,以保护托管集群内部的数据,现在,对于我们尝试提出的每个请求,我们都会收到以下异常:

Tire::Search::SearchRequestFailed (401 : {"error":{"root_cause":[{"type":"security_exception","reason":"action [indices:data/read/search] requires authentication","header":{"WWW-Authenticate":"Basic realm=\"shield\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"action [indices:data/read/search] requires authentication","header":{"WWW-Authenticate":"Basic realm=\"shield\" charset=\"UTF-8\""}},"status":401}):
Run Code Online (Sandbox Code Playgroud)

我们从Elasticsearch 附带的Shield插件配置了一些用户,但是我不确定如何从我的 ruby​​ On Rails 应用程序输入此身份验证,我使用 Tire 在我的 Ruby On Rails 应用程序中集成弹性搜索,但我找不到我可以输入这些信息来验证我的应用程序并解决此问题吗?

我们想知道如何使用这两个 gem 进行身份验证: ElasticSearch-railsTire

ruby-on-rails elasticsearch tire ruby-on-rails-4

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