我是rails的新手,并使用rails-2.3.5和ruby-1.8.7.这是我的notifier.rb模型:
# app/models/notifier.rb
class Notifier < ActionMailer::Base
default_url_options[:host] = "foo.com"
#This method sends an email with token to users who request a new password
def password_reset_instructions(user)
subject "Password Reset Instructions"
from "Support Team<support@foo.com>"
recipients user.email
sent_on Time.now
body :edit_password_reset_url =>
edit_password_reset_url(user.perishable_token)
end
end
Run Code Online (Sandbox Code Playgroud)
当我调用此方法时,我收到以下错误:
Net::SMTPFatalError in Password resetsController#create
555 5.5.2 Syntax error. 36sm970138yxh.13
Run Code Online (Sandbox Code Playgroud)
我发现一篇文章说这个问题是ruby-1.8.4中的一个错误,修复方法是从:from字段中删除尖括号.果然,如果我只使用"support@foo.com"代替"支持团队<support@foo.com>",一切正常.
但是,在rails-2.3.5 API或ActionMailer Basics rails指南中没有引用此问题,实际上它们在其actionmailer设置示例中都显示"name <mail address>".谁知道我做错了什么?
快速学习课程.我一直在读,构造函数(Python中的def init)应该只设置已分配的变量,计算的实例属性应该通过属性设置.此外,使用@property优先于Java风格的getter/setter.
好的,但是我见过的每个例子都只设置了一个属性.假设我有一个具有三个复杂属性的对象需要计算,查询等.你如何表示多个@property getter,setter,deleters?以下是另一篇文章的示例:
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
Run Code Online (Sandbox Code Playgroud)
因此,如果我有三个实例变量是基于其他一些属性的计算值,它是否会像这样
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
@property
def y(self):
"""I'm the 'y' property.""" …Run Code Online (Sandbox Code Playgroud) 我是Python新手。基于这篇SO 文章,我使用 PYODBC 创建了一个 SQL 查询来搜索历史期权价格的 MSSQL 表,并选择执行值最接近我指定的所需值的期权符号。然而,我现在尝试通过重构这个程序来自学 OOP,为此我尝试在 SQLAlchemy 中实现 ORM。
我不知道如何实现计算的 Order_By 语句。我认为计算列不起作用,因为desired_strike是用户(我)在每个方法调用时指定的参数。
这是(简化的)原始代码:
import pyodbc
def get_option_symbol(stock, entry_date, exp_date, desired_strike):
entry_date = entry_date.strftime('%Y-%m-%d %H:%M:%S')
exp_date = exp_date.strftime('%Y-%m-%d %H:%M:%S')
cursor.execute("""select top(1) optionsymbol
from dbo.options_pricestore
where underlying=?
and quotedate=?
and expiration=?
and exchange='*'
and option_type=?
order by abs(strike - ?)""",
stock,
entry_date,
exp_date,
desired_strike,
)
row = cursor.fetchone()
return row
Run Code Online (Sandbox Code Playgroud)
也许不是最 Pythonic,但它确实有效。我现在将以前的过程代码封装到类中,并使用 SQLAlchemy 的 ORM,但在这种情况下,我无法弄清楚如何在 Order_By 子句中表示 abs(strike -desired_strike)。我过去没有太多使用 lambda 函数,但这是我想到的:
import sqlalchemy
class Option(Base):
__tablename__= 'options_pricestore' …Run Code Online (Sandbox Code Playgroud) python ×2
actionmailer ×1
class ×1
decorator ×1
properties ×1
sql ×1
sql-server ×1
sqlalchemy ×1