小编Aug*_*ger的帖子

Rails 设计可确认:注册时授权首次登录

我用的是设备3.0.3

我有一个可以确认的模型。

我希望用户在整个会话期间首次注册时登录,然后当用户回来时,必须对其进行确认。这个想法并不是因为必须检查电子邮件而中断注册导航流程。

另一种选择是在用户拒绝登录之前给予用户 24 小时的延迟。

我尝试使用after_inactive_sign_up_path_for这种方式:

  def after_inactive_sign_up_path_for(user)
    user.confirm!
    sign_in(:user, user)
    user.confirmed_at = nil
    user.save
    return user_path(user)
  end 
Run Code Online (Sandbox Code Playgroud)

但最后我还是被拒绝了。

有什么建议可以正确解决这个问题吗?

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

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

Rails和ActiveRecord:DRY在范围和布尔方法中使用相同的逻辑

我有一个范围和方法的模型,如下所示:

class Model < ActiveRecord::Base

  scope :editable, where('updated_at > ? OR (updated_at IS NULL AND created_at > ?)', (Date.today - 3.days).beginning_of_day, (Date.today - 3.days).beginning_of_day)

  def editable?
    return (self.updated_at || self.created_at) > (Date.today - 3.days).beginning_of_day
  end

end
Run Code Online (Sandbox Code Playgroud)

我觉得我不应该在范围和方法中写两次相同的逻辑.有没有办法可以避免这种情况?

我在Rails 3.2上

谢谢

ruby activerecord ruby-on-rails

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

Rails:Belongs_to 多态关联 + 条件

所以我有这个模型:

class Model < ActiveRecord::Base
  attr_accessible :to_id, :to_type

  belongs_to :to, polymorphic: true

end
Run Code Online (Sandbox Code Playgroud)

我想知道当 own_to 属于特定类型时是否可以添加另一个关系:

class Model < ActiveRecord::Base
  attr_accessible :to_id, :to_type

  belongs_to :to, polymorphic: true
  belongs_to :to_user, :foreign_key => :to_id, :conditions => ['to_type = ?', 'User'] # doesn't work
  # OR MAYBE
  belongs_to :to_user, :foreign_key => :to_id, :foreign_class => 'User' # It doesn't check on Model's to_type...
end
Run Code Online (Sandbox Code Playgroud)

因此,这my_model.to_user将返回“user是否存在”、nil“是否未设置”或“是否属于不同类”。

使用 Rails 3.2

谢谢!

activerecord relationships ruby-on-rails-3

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

配置postgres以在开发模式下接受任何用户/密码组合

做自由职业者,我继续开始新的项目.

我发现postgresql配置只在开发模式下使用时非常复杂(我完全理解生产要求有很大不同).

我想要实现的是配置我的postgres,以便使用任何用户名/密码/端口/连接模式,它具有数据库的所有权限(因为安全性无论如何).使用Rails,所有配置都在config/database.yml,我不想从文件本身更改任何内容.

我实现了对每个连接(本地和TCP)的任何password_less身份验证,但这样做:

# /etc/postgresql/9.3/main/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     trust
host    all             all             0.0.0.0/0               trust
Run Code Online (Sandbox Code Playgroud)

和:

# /etc/postgresql/9.3/main/postgresql.conf
listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)

从这篇文章来看.

但如果用户(例如appname_dev)不存在,我得到:

FATAL:  role "appname_dev" does not exist
Run Code Online (Sandbox Code Playgroud)

这个帖子允许我在一行中创建用户,这很公平(sudo -u postgres createuser -d -R -P appname_dev),但我真的希望这是即插即用.

  • 我怎样才能做到这一点?
  • 在postgres上是不是有任何开发安装模式,默认情况下,凭据配置比当前更轻?
  • 我错过了一些让这不成问题的最佳实践吗?

我理解端口的东西可能很棘手,但恕我直言,其余的不应该!

谢谢您的帮助!

authentication postgresql development-environment

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

Docker磁盘内存:我可以删除中间映像吗?

我的磁盘内存不足。

如果我运行docker images,我会得到很多结果:

app_mongodb   latest              355f8f37c385        17 hours ago        568.1 MB
app_web       latest              a31db2244a8b        18 hours ago        868.2 MB
<none>                    <none>              71e586165d46        18 hours ago        568.1 MB
<none>                    <none>              422c281541d3        18 hours ago        568.1 MB
<none>                    <none>              1b16da634fa1        18 hours ago        535.4 MB
website_web               latest              e4442589e2f4        2 days ago          793.6 MB
<none>                    <none>              5445f9b915e6        3 days ago          535.4 MB
<none>                    <none>              e825b94d5938        3 days ago          868 MB
<none>                    <none>              ea1ddc53d17f        3 days ago          535.4 MB
<none>                    <none>              90531b8bd2d3 …
Run Code Online (Sandbox Code Playgroud)

docker

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

docker-compose hostname to communicate between containers works with postgres but not app

I have the following docker-compose.yml:

services:
  postgres:
    image: "postgres:11.0-alpine"
  app:
    build: .
    ports:
      - "4000:4000"
    depends_on:
      - postgres
      - nuxt
  nuxt:
    image: node:latest
    ports:
      - "3000:3000"
Run Code Online (Sandbox Code Playgroud)

I need nuxt service to communicate with app.

Within the nuxt service (docker-compose run --rm --service-ports nuxt bash), if I run

root@62cafc299e8a:/app# ping postgres 
PING postgres (172.18.0.2) 56(84) bytes of data.
64 bytes from avril_postgres_1.avril_default (172.18.0.2): icmp_seq=1 ttl=64 time=0.283 ms
64 bytes from avril_postgres_1.avril_default (172.18.0.2): icmp_seq=2 ttl=64 time=0.130 ms
64 …
Run Code Online (Sandbox Code Playgroud)

docker docker-network

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

Rails link_to使用url而不是path进行对象插值

我有两个型号,说UserGroup

我知道我可以使用不同的解决方案访问每个对象的show动作:

# PATH
link_to user.name, user_path(user)
link_to group.name, group_path(group)

# URL
link_to user.name, user_url(user)
link_to group.name, group_url(group)
Run Code Online (Sandbox Code Playgroud)

但是Rails的魔法何时发生

# PATH
link_to user.name, user_path(user)
link_to group.name, group_path(group)
# is equivalent to
# PATH
link_to user.name, user
link_to group.name, group
Run Code Online (Sandbox Code Playgroud)

有没有办法插入来获取网址?

我可以这样写:

link_to user.name, send("#{user.class.name.downcase}_url", user)
Run Code Online (Sandbox Code Playgroud)

但是有更干净的方式吗?

ruby-on-rails link-to

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

Heroku PG:恢复写入访问被撤销

Write access revoked我的heroku开发计划中有一个,因为我的数据库中有太多行.

这是我的结果:

$ heroku pg:info
=== HEROKU_POSTGRESQL_WHITE_URL (DATABASE_URL)
Plan:        Dev
Status:      available
Connections: 1
PG Version:  9.2.7
Created:     2013-06-21 13:24 UTC
Data Size:   12.0 MB
Tables:      48
Rows:        10564/10000 (Write access revoked) - refreshing
Fork/Follow: Unsupported
Rollback:    Unsupported
Region:      Europe
Run Code Online (Sandbox Code Playgroud)

从那以后,我删除了一半的行,因为它们是由一个退化的脚本创建的,而且我在我的开发环境中.我检查了pgadmin并在rails控制台中,看起来实际上删除了这些行.

我该如何恢复write access到我的数据库?我不想升级,因为我通常不需要它.等了2个小时已经没什么变化了.

我读的内容heroku pg:info并没有快速更新,但我能做些什么呢?

感谢你的支持

postgresql heroku

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

Haskell takeWhile + 1

如何编写一个takeWhile来保持第一个与条件不匹配的元素?

示例(显然我的例子比这更棘手):

而不是takeWhile (\× - > x! = 3) [1..10]回归[1,2]我需要[1,2,3].

我想到了,(takeWhile myFunc myList) ++ [find myFunc myList]但这意味着我需要通过我的清单2次...

任何的想法?

haskell

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

Bash 移动 * 到子文件夹失败:无法移动到自身的子目录

我有一个包含多个文件的文件夹,我想将其移动到一个子文件夹:

mkdir subfolder
mv ./* subfolder
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我得到:

mv: cannot move 'subfolder' to a subdirectory of itself

我怎样才能简单地避免这种情况?

bash

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